2010-11-16 17 views
7

में HttpService मैं आरएसटी सेवा जेसन डेटा को वापस करने के लिए https सेवा पर जेसन सामग्री प्रकार सेट करने का प्रयास कर रहा हूं। जब मैं फिडलर में सामग्री प्रकार जोड़ता हूं तो सभी ठीक काम करते हैं इसलिए समस्या फ्लेक्स एप्लिकेशन में होती है, न कि वेब-सेवा में। लेकिन नीचे दिया गया कोड काम नहीं करता है और मुझे जेसन के बजाय एक्सएमएल डेटा मिलता है।एसएस पर JSON सामग्री-प्रकार सेट करें: फ्लेक्स

क्या कोई मुझे कामकाज/समाधान प्रदान कर सकता है?

MXML:

<s:HTTPService id="service" method="POST" url="server.com" 
       result="loaded(event)" fault="fault(event)" 
       useProxy="false" resultFormat="text"> 

actionscript:

public function loadAllSamples():void { 
    service.contentType = "application/json"; 
    service.send('something'); 
} 

उत्तर

12

ऐसा लगता है कि मैं इसे हल कर दिया है। चाल है कि स्वीकारें हैडर सेवा पर जोड़ा जाना चाहिए है:

 var header:Object=new Object(); 

     **header["Accept"] = "application/json";** 

     service.contentType = "application/json"; 
     service.headers = header; 
     service.send('{}'); 

मैं इसे किसी के लिए उपयोगी हो सकता है चाहता हूँ। सौभाग्य।

9

धन्यवाद, यह मेरे लिए बहुत उपयोगी था। मैं करने के लिए शीर्ष लेख काम को सरल बनाया:

httpService.headers = { Accept:"application/json" };

0

सोचा मैं एक क्लीनर उदाहरण पोस्ट चाहते हैं।

-------- JsonHttpService.as

package services 
{ 
    import mx.rpc.http.HTTPService; 
    import mx.rpc.http.SerializationFilter; 

    public class JsonHttpService extends HTTPService 
    { 
     private var jsonFilter:JsonSerializationFilter = new JsonSerializationFilter(); 

     public function JsonHttpService(rootURL:String=null, destination:String=null) 
     { 
      super(rootURL, destination); 
      resultFormat = "json"; 
     } 

     override public function get serializationFilter():SerializationFilter { 
      return jsonFilter; 
     } 
    } 
} 

--- JsonSerializationFilter.as

package services 
{ 
    import mx.rpc.http.AbstractOperation; 
    import mx.rpc.http.SerializationFilter; 

    public class JsonSerializationFilter extends SerializationFilter 
    { 
     public function JsonSerializationFilter() { 
      SerializationFilter.registerFilterForResultFormat("json", this); 
      super(); 
     } 

     override public function deserializeResult(operation:AbstractOperation, result:Object):Object { 
      return JSON.parse(result as String); 
     } 

     override public function getRequestContentType(operation:AbstractOperation, obj:Object, contentType:String):String { 
      return "application/json"; 
     } 

     override public function serializeBody(operation:AbstractOperation, obj:Object):Object { 
      return JSON.stringify(obj); 
     } 
    } 
}