2016-11-30 20 views
2

我試圖使用Codename One以JSON BODY發送POST請求。 這裏是使得連接和發送消息codenameone在POST中發送JSON BODY

ByteArrayOutputStream bOutput = new ByteArrayOutputStream(); 
    bOutput.write("{\"Key1\": \"Value1\",\"Key2\": \"Value2\"}".getBytes()); 

    try { 
     connectAction connReq = new connectAction(); 

     connReq.setPost(true); 
     connReq.addRequestHeader("Authorization", "1234"); 
     connReq.addRequestHeader("client_id","4321"); 
     connReq.addRequestHeader("Content-Type","application/json"); 
     connReq.setUrl("https://myapi.com/test"); 
     connReq.setHttpMethod("POST"); 
     connReq.buildRequestBody(bOutput); 
     NetworkManager.getInstance().addToQueueAndWait(connReq); 
     Map<String,Object> result = new JSONParser().parseJSON(new InputStreamReader(new ByteArrayInputStream(connReq.getResponseData()), "UTF-8")); 
     return result; 
    } 
    catch(Exception err) { 
     System.err.println(err); 
     return null; 
    } 

這裏是與buildRequestBody派生類中重寫

public class connectAction extends ConnectionRequest 
{ 

    connectAction() 
    { 

    } 



    @Override 
    public void buildRequestBody(OutputStream os) 
    { 

    } 
} 

現在,當我把在公共無效buildRequestBody斷點(OutputStream的操作系統的代碼)我可以看到, 'OS' 的值是

OS =(java.io.ByteArrayOutputStream中){ 「KEY1」: 「值1」, 「密鑰2」: 「值2」}

所以我知道這個價值正在使這一切成爲現實。

但是,當我啓動網絡監視器時,只填寫請求標題並且標題爲空。

任何幫助真正讚賞。

感謝

回答

2

試試下面的代碼希望這將有助於

// convert the object to a JSON document 
HashMap hashtable = new HashMap(); 
hashtable.put("Key1", "Value1"); 
hashtable.put("Key2", "Value2"); 
final String payload = Result.fromContent(hashtable).toString(); 

protected void buildRequestBody(OutputStream os) throws IOException { 
    os.write(payload.getBytes("UTF-8")); 
} 
+0

謝謝你這麼多!!!!!我真的一直在努力。我正要改變框架並尋找其他的東西:-)。謝謝謝謝! –

+0

非常歡迎 – tizbn

+0

修復了代碼格式 –