2016-11-11 90 views
1

我正在使用CodenameOne向POST請求發送POST請求。 它與GET完美協作,因爲我不必將消息傳遞給BODY。 請有人告訴我如何通過我的帖子消息的身體?codenameone POST請求BODY

這裏是我使用的連接代碼...

try { 
     ConnectionRequest connReq = new ConnectionRequest(); 

     connReq.setPost(true); 
     connReq.addRequestHeader("Authorization", "54321); 
     connReq.addRequestHeader("client_id","12345"); 
     connReq.addRequestHeader("Content-Type","application/json"); 
     connReq.setUrl("https://myapi.com/connect"); 
     connReq.setHttpMethod("POST"); 
     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; 
    } 

我已經在這裏找到了一些文件 - 但我不能完全理解他們告訴我...

https://www.codenameone.com/javadoc/com/codename1/io/ConnectionRequest.html#buildRequestBody-java.io.OutputStream-

感謝

回答

1

如果你想有一個標準的「形式」的風格後是,如果你有一個HTML表單字段只使用,你會得到什麼,你會用GET。它將與POST一起工作。

如果你想「硬編碼」你的身體,例如一些Web服務期望JSON成爲請求的主體,只需將其寫入輸出流中的buildRequestBody方法中即可。

+0

我想這.... ByteArrayOutputStream bOutput = new ByteArrayOutputStream(); bOutput.write(「\」Key \「:\」Value \「」。getBytes());嘗試{..... connReq.buildRequestBody(bOutput); .....}但是我得到這個錯誤... buildRequestBody(OutputStream)保護了ConnectionRequest中的訪問我做錯了什麼? –

+0

'buildRequestBody'方法是一個回調,你應該通過繼承'ConnectionRequest'來重寫。 –

+0

謝謝 - 我已經完成了這個,現在至少它正在建設中。然而身體仍然是空白的。當我調試並逐步通過時,我可以看到傳入我新的被重寫的buildRequestBody方法的數據是有效的。我在觀察窗口注意到'data'byte []變量爲空。這應該填充? –