2016-03-02 23 views
10

Użyłem tej metody https://stackoverflow.com/a/31744565/5829906, ale nie publikuję danych.Jak przesłać dane za pomocą biblioteki okhttp z treścią typu x-www-form-urlencoded?

Oto mój kod

OkHttpClient client = new OkHttpClient(); 
     RequestBody requestBody = new MultipartBuilder() 
       .type(MultipartBuilder.FORM) 
       .addFormDataPart("rating", "5").addFormDataPart("comment", "Awesome") 
       .build(); 
     Request request = new Request.Builder() 
       .url(url) 
       .post(requestBody) 
       .build(); 
     try { 

      Response response = client.newCall(request).execute(); 
      String responseString = response.body().string(); 
      response.body().close(); 
     }catch (Exception e) { 
      e.printStackTrace(); 
     } 

Próbowałem DefaultHttpClient, który wydaje się działać, ale to pokazuje, przestarzałe, więc pomyślałem próbować coś different..Cant dowiedzieć się, co jest nie tak w tym

Odpowiedz

11

po wybraniu MediaType MultipartBuilder.FORM który jest do przesyłania pliku/obraz jako wieloczęściowy

public static final MediaType FORM = MediaType.parse("multipart/form-data"); 

spróbuj wysłać tak jak

private final OkHttpClient client = new OkHttpClient(); 
public void run() throws Exception { 
    RequestBody formBody = new FormBody.Builder().add("search", "Jurassic Park").build(); 
    Request request = new Request.Builder().url("https://en.wikipedia.org/w/index.php").post(formBody).build(); 
    Response response = client.newCall(request).execute(); 
    if (!response.isSuccessful()) 
     throw new IOException("Unexpected code " + response); 
    System.out.println(response.body().string()); 
}