2016-11-11 17 views
1

CodenameOneを使用してPOSTリクエストをREST APIに送信しています。 メッセージと共にBODYを渡す必要がないので、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フォーム内のフィールドを持っているだけでを使用している場合、あなたが得るだろうかある標準の「FORM」スタイルのポストをしたい場合のようにGETとなります。それはPOSTとうまく動作します。

あなたの体を「ハードコード」する場合は、いくつかのWebサービスではJSONがリクエストの本体になると期待していますが、これは見つかったbuildRequestBodyメソッドの出力ストリームに書き込むだけです。

+0

私はこれを試しています.... ByteArrayOutputStream bOutput = new ByteArrayOutputStream(); bOutput.write( "\" Key \ ":\" Value \ ""。getBytes()); try {..... connReq.buildRequestBody(bOutput); .....}しかし、私はこのエラーが発生します... buildRequestBody(OutputStream)はConnectionRequestのアクセスを保護しています私は間違って何をしていますか? –

+0

'buildRequestBody'メソッドは' ConnectionRequest'のサブクラス化によってオーバーライドするコールバックです。 –

+0

ありがとう - 私はこれをやったが、今は少なくともそれが構築されています。しかし、ボディはまだ空白です。私がデバッグしてステップスルーすると、新しいオーバーライドされたbuildRequestBodyメソッドに渡されるデータが有効であることがわかります。ウォッチウィンドウで、 'data' byte []変数がnullであることに気付きました。これは人口に当てるべきでしょうか? –