Ich habe dieses Beispiel unten gefunden, um HTTP POST Nachricht mit OKHttp
zu senden.Wie Körper zu OKHttp Nachricht übergeben?
Ich verstehe nicht, wie man eine Zeichenfolge an RequestBody
übergeben. Warum braucht es zwei Argumente?
RequestBody formBody = new FormBody.Builder()
.add("message", "Your message")
.build();
Request request = new Request.Builder()
.url("http://rhcloud.com")
.post(formBody).addHeader("operation", "modifyRecords")
.build();
if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.KITKAT) {
client.newCall(request).enqueue(new Callback() {
@Override
public void onFailure(Call call, IOException e) {
e.printStackTrace();
}
@Override
public void onResponse(Call call, Response response) throws IOException {
try (ResponseBody responseBody = response.body()) {
if (!response.isSuccessful())
throw new IOException("Unexpected code " + response);
Headers responseHeaders = response.headers();
for (int i = 0, size = responseHeaders.size(); i < size; i++) {
System.out.println(responseHeaders.name(i) + ": " + responseHeaders.value(i));
}
System.out.println(responseBody.string());
}
}
});
}
}
Ich möchte nur eine JSON senden. Was 'MediaType' muss ich einstellen? –
Ich denke das: http://stackoverflow.com/questions/34179922/okhttp-post-body-as-json könnte hilfreich sein. Der Autor dieses Beitrags hat eine Lösung hinzugefügt. Ich habe eine Weile nicht mit OkHttp gearbeitet. Anyway MediaType muss application/json sein – Brudus
Die richtige Linie, die ich brauche, ist: 'RequestBody formBody = RequestBody.create (MediaType.parse (" application/json ")," [\ "MB \", [], []] "); ' –