2016-05-28 8 views
0

最近、私は検索インターフェースを使いたいです。しかし、私はリクエストの本文で混乱しています。 あなたは自分のサイトで検索する必要がある場合は、文献によれば、あなたは次のように行うことができます。javaのではなくカールでこの要求を投稿するそれでは、どのようリクエストをJavaで投稿する

curl -d "keyword=android" http://gankio.herokuapp.com/search 

私はokhttpの使用を試みました。

Thread thread = new Thread(new Runnable() { 
       @Override 
       public void run() { 
        OkHttpClient client = new OkHttpClient(); 
        String json = "keyword=android"; 
        RequestBody body = RequestBody.create(JSON,json); 
      Request request = new Request.Builder() 
        .url("http://gankio.herokuapp.com/search") 
        .post(body) 
        .build(); 
      try { 
       Response response = client.newCall(request).execute(); 
       Log.d("TAG",response.body().string()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    thread.start();` 
+0

私はあなたの人生を簡素化するライブラリを探しています。 Idkなら何でも良いがhttps://github.com/kevinsawicki/http-request#perform-a-post-request-with-some-data-and-get-the-status-of-the-responseは1行であるコード。 – zapl

+0

curlが動作していて、コードがhttp 400エラーになっていますか? 'curl -d'はjsonではなく' application/x-www-form-urlencoded'としてデータを送信します。 http://stackoverflow.com/questions/24233632/how-to-add-parameters-to-api-http-post-using-okhttp-library-in-androidは、OkHttpでそれを行う方法です。 – zapl

+0

ありがとうございました。私はそれを解決する。 – CoXier

答えて

2

です。

Thread thread = new Thread(new Runnable() { 
     @Override 
     public void run() { 
      OkHttpClient client = new OkHttpClient(); 
      RequestBody requestBody = new FormBody.Builder().add("keyword", "android").build(); 
      Request request = new Request.Builder() 
        .url("http://gankio.herokuapp.com/search") 
        .post(requestBody) 
        .build(); 
      try { 
       Response response = client.newCall(request).execute(); 
       Log.d("TAG", response.body().string()); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 
     } 
    }); 
    thread.start(); 
0

あなたはこのlinkは、HttpURLConnectionの接続方法を説明しますjava.net からのHttpURLConnectionを使用して試すことができます。

0

あなたは、以下のコードを使用してくださいPOSTリクエストやフォームのparamを使用してサービスを呼び出したい:

OkHttpClient client = new OkHttpClient(); 

    Request request = new Request.Builder() 
     .url("http://gankio.herokuapp.com/search?keyword=android") 
     .post(RequestBody.create(MediaType.parse("application/json; charset=utf-8"), "")) 
     .build(); 

    try { 
     Response response = client.newCall(request).execute(); 
     System.out.println(response.toString()); 
     System.out.println(response.body().string()); 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
     e.printStackTrace(); 
    } 

Response response = client.newCall(request).execute(); 

を呼び出したいサービスが通過するすべてのボディを必要としない、それだけは、フォームパラメータを必要とします値(キーワード)(アンドロイド)、しかし、あなたは体を使用してパラメータを渡すしようとしているが、これは私がこの質問を解決したあなたのミス

+0

まずは、ありがとうございます。 request.post(null) 'は禁止されています。 – CoXier

+0

はい私は最新バージョンを使用しています。あなたは私の間違いを指摘しています。大変ありがとうございます。 – CoXier

+0

大丈夫です。 –

関連する問題