Mon exigence est d'utiliser PUT
, d'envoyer un en-tête et un corps au serveur qui met à jour quelque chose dans la base de données.
Je viens de lire la documentation okHttp et j'essayais d'utiliser leur exemple POST
mais cela ne fonctionne pas pour mon cas d'utilisation (je pense que c'est peut-être parce que le serveur nécessite que j'utilise PUT
au lieu de POST
) .
C'est ma méthode avec POST
:
public void postRequestWithHeaderAndBody(String url, String header, String jsonBody) {
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, jsonBody);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.post(body)
.addHeader("Authorization", header)
.build();
makeCall(client, request);
}
J'ai essayé de rechercher exemple okHttp en utilisant PUT
sans aucun succès, si je dois utiliser PUT
method y at-il de toute façon à utiliser okHttp?
J'utilise okhttp: 2.4.0 (juste au cas où), merci pour toute aide!
Changez votre .post
avec .put
public void putRequestWithHeaderAndBody(String url, String header, String jsonBody) {
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, jsonBody);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url(url)
.put(body) //PUT
.addHeader("Authorization", header)
.build();
makeCall(client, request);
}
Si vous utilisez OkHttp Version 2.x, utilisez les éléments suivants:
OkHttpClient client = new OkHttpClient();
RequestBody formBody = new FormEncodingBuilder()
.add("Key", "Value")
.build();
Request request = new Request.Builder()
.url("http://www.foo.bar/index.php")
.put(formBody) // Use PUT on this line.
.build();
Response response = client.newCall(request).execute();
if (!response.isSuccessful()) {
throw new IOException("Unexpected response code: " + response);
}
System.out.println(response.body().string());
Comme OkHttp version 3 a remplacé FormEncodingBuilder
par FormBody
et FormBody.Builder()
, vous devez procéder comme suit pour les versions 3.x:
OkHttpClient client = new OkHttpClient();
RequestBody formBody = new FormBody.Builder()
.add("message", "Your message")
.build();
Request request = new Request.Builder()
.url("http://www.foo.bar/index.php")
.put(formBody) // PUT here.
.build();
try {
Response response = client.newCall(request).execute();
// Do something with the response.
} catch (IOException e) {
e.printStackTrace();
}