2016-07-18 23 views
1

コードネームone apiからのJSON put要求を理解できません。私はこの要求をするための例を見つけませんでした。コードネームAPIを使用してJSON PUTリクエストを作成する方法

質問: 1.コンテンツの長さパラメータを送信する必要があるかどうかはわかりません。はいの場合、どうすれば送信できますか? 2.私は、リクエスト本体に「真実」だけを送信しなければなりません。 req.addArgument()メソッドを使用するためのキーと値はありません。 3. buildRequestBody()メソッドを使用して要求をオーバーライドする必要がありますか。あなたは例を挙げることができますか? 4.応答を受信した後の結果を確認する方法。

何か助けを得ることができます。おかげさまで

下記のコードをご覧ください。

req.setUrl(identityUrl); 
req.setPost(false); 
req.setHttpMethod("PUT");    
req.setContentType("application/json"); 
req.addRequestHeader("authorization", token); 
req.addArgument("Content-Length", "4"); 
req.setReadResponseForErrors(true); 
InfiniteProgress ip = new InfiniteProgress(); 
Dialog d = ip.showInifiniteBlocking(); 
NetworkManager.getInstance().addToQueueAndWait(req); 
d.dispose(); 
JSONParser parser = new JSONParser(); 
Map map2 = null; 
try { 
map2 = parser.parseJSON(new InputStreamReader(new ByteArrayInputStream(req.getResponseData()), "UTF-8")); 
} catch (IOException ex) { 
     ex.printStackTrace(); 
} 

答えて

0

あなたはコンテンツを完全に埋め込むことがしたい場合は、buildRequestBodyメソッドをオーバーライドする必要があります。身体が呼び出されるにはpostが真である必要があることに注意してください。

私はあなたがcontent-lengthを必要とは思わない:接続要求は私のためにすべてがそうであるように、私はもはやストリームを閉じたりIOExceptionを処理する必要が

req = new ConnectionRequest(identityUrl) { 
    protected void buildRequestBody(OutputStream os) throws IOException { 
     os.write(json.getBytes("UTF-8")); 
    } 

    protected void readResponse(InputStream input) throws IOException { 
     map2 = parser.parseJSON(new InputStreamReader(input, "UTF-8")); 
    } 

    protected void postResponse() { 
     // response completed, this is called on the EDT do the application logic here... 
    } 
}; 
req.setPost(true); 
req.setHttpMethod("PUT");    
req.setContentType("application/json"); 
req.addRequestHeader("authorization", token); 
req.setReadResponseForErrors(true); 
InfiniteProgress ip = new InfiniteProgress(); 
Dialog d = ip.showInifiniteBlocking(); 
req.setDisposeOnCompletion(d); 
NetworkManager.getInstance().addToQueue(req); 

お知らせ。また、リード/ビルドメソッドはネットワークスレッドで呼び出され、EDTでは呼び出されないので、残りのフローをpostResponseで行う必要があります。

+0

FYI質問が正解/有用なupvoteであれば、それを受け入れるために、その隣にあるチェックボックスをチェックしてください。これにより、スタックオーバーフローコミュニティ内で追加の特権を与えるポイントが与えられます。 –

関連する問題