0

JSON ファイルを返すサーバーに対して GET 要求を実行しようとしています。しかし、HTTP statusLine / 422 でエラーが発生します。理由は誰にもわかります。以下に、私がやっている方法を示します

public void testConverteArquivoJsonEmObjetoJava() {

    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet get = new HttpGet(
            "http://safe-sea-4024.ppooiheroku4554566adffasdfasdfalaqwerpcp.com/crimes/mobilelist");

    get.setHeader("Accept", "application/json");
    get.setHeader("Content-type", "application/json");

    get.getParams()
            .setParameter("token",
                    "0V1AYFK12SeCZHYgXbNMew==$tRqPNplipDwtbD0vxWv6GPJIT6Yk5abwca3IJ88888a6JhMs=");

    HttpResponse httpResponse;
    try {
        httpResponse = httpClient.execute(get);
        String jsonDeResposta = EntityUtils.toString(httpResponse
                .getEntity());

        System.out.println();

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
4

2 に答える 2

1

通常、リクエストではContent-Typeヘッダーを指定しません。GETこのヘッダーは、メッセージに含まれるエンティティを解釈する方法をサーバーに伝えます。GET本文を含めることができない場合でも、サーバー側が JSON エンティティを期待している可能性があります。Content-Typeヘッダーを削除してみてください。

あなたが巧妙に変更した URL を試してみたところ、問題なく動作しました。ただし、別のトークン クエリ パラメーターを指定すると、422 が返されました。ステータス行にフレーズがないので、Ruby アプリケーションがそれを生成していると思います。

于 2013-02-08T02:22:41.433 に答える
0

私はなんとか問題を解決することができました。パラメータを間違って渡してしまいました。この投稿によると[ブログ]:AndroidでHTTP GETリクエストにパラメーターを追加するにはどうすればよいですか?"リンク"。このメソッドは、私が一種のPOSTリクエストを行うために使用されます

この方法は正しいです

 public void testConverteArquivoJsonEmObjetoJava() {
    List<NameValuePair> params = new LinkedList<NameValuePair>();

    params.add(new BasicNameValuePair("token","0V1AYFK12SeCZHYgXbNMew==$="));

    String paramString = URLEncodedUtils.format(params, "utf-8");

    DefaultHttpClient httpClient = new DefaultHttpClient();
    HttpGet get = new HttpGet(
            "http://safep.com/crimes/mobilelist" + "?"
                    + paramString);
    HttpResponse httpResponse;
    try {

        httpResponse = httpClient.execute(get);
        String jsonDeResposta = EntityUtils.toString(httpResponse
                .getEntity());

        System.out.println();

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}`
于 2013-02-09T03:44:27.840 に答える