2016-11-11 85 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 []变量为空。这应该填充? –