2017-01-25 6 views
0

私はPOSTを使用してリクエストする必要がある別のApiサービスに直面していますが、ボディコンテンツがない場合、イメージをbase64に変換して送信していますその問題と私はそれが動作しませんでした、この "ソリューション" を見つけ:OKHttpを使用して空のボディでPOSTを行う方法

1:

RequestBody reqbody = RequestBody.create(null, new byte[0]); 
Request.Builder formBody = new Request.Builder().url(url).method("POST",reqbody).header("Content-Length", "0"); 

2:

request = new Request.Builder() 
       .url(BASE_URL + route) 
       .method("POST", RequestBody.create(null, new byte[0])) 
       .post(requestBody) 
       .build(); 

でもI POSTメソッドで明示的に言って、それGETリクエストを送信し続けます。 POST要求。ありがとう!

My活動:

public String SendImage(String image64) throws IOException{ 
    //RequestBody reqbody = RequestBody.create(null, new byte[0]); 

    Request request = new Request.Builder() 
      .url("http://ap.imagensbrasil.org/api/1/upload/?key=9c9dfe77cd3bdbaa7220c6bbaf7452e7&source=" + image64 + "&format=txt") 
      .method("POST", RequestBody.create(null, new byte[0])) 
      .header("Content-Length", "0") 
      .build(); 

    OkHttpClient Client = client.newBuilder() .readTimeout(25, TimeUnit.SECONDS).build(); 
    Response response = Client.newCall(request).execute(); 
    return response.body().string(); 
} 

答えて

-1

はそれが役立つかもしれませんが、次のコードで試してみてください。

MediaType JSON = MediaType.parse("application/json; charset=utf-8"); 
RequestBody body = RequestBody.create(JSON, bodyString); 

OkHttpClient client = new OkHttpClient(); 
Request request = new Request.Builder() 
     .url("http://ap.imagensbrasil.org/api/1/upload/?key=9c9dfe77cd3bdbaa7220c6bbaf7452e7&source=" + image64 + "&format=txt") 
     .post("") 
     .build(); 
+0

しかし、ここで私は、URLを入れましたか?そのAPIには送信するコンテンツがありません。私はBody Stringも持っていません。すべてがURLの中に入ります。私の更新を見てください –

+0

このコードを試してください。 – Rohit

+0

メソッド.post( "")は文字列を受け入れないので、私はしました:RequestBody body = RequestBody.create(JSON、 ""); .post(body)とします。 –

0

それは改造に取り組んでいるので、あなたは、レトロフィットV2.0を続ける場合は、この使用することができます:

public class Base64EncodeRequestInterceptor implements Interceptor { 

    @Override 
    public Response intercept(Chain chain) throws IOException { 
     Request originalRequest = chain.request(); 
     Request.Builder builder = originalRequest.newBuilder(); 

     if (originalRequest.method().equalsIgnoreCase(POST)) { 
      builder = originalRequest.newBuilder() 
       .method(originalRequest.method(), encode(originalRequest.body())); 
     } 


     return chain.proceed(builder.build()); 
    } 

    private RequestBody encode(RequestBody body) { 
     return new RequestBody() { 
      @Override 
      public MediaType contentType() { 
       return body.contentType(); 
      } 

      @Override 
      public void writeTo(BufferedSink sink) throws IOException { 
       Buffer buffer = new Buffer(); 
       body.writeTo(buffer); 
       byte[] encoded = Base64.encode(buffer.readByteArray(), Base64.DEFAULT); 
       sink.write(encoded); 
       buffer.close(); 
       sink.close(); 
      } 
     }; 
    } 
} 
+0

コードは正確に何をしていますか? –

関連する問題