在Android的OKhttp中通过POST请求发送JSON正文

我已经设置好OkHttpClient并成功将GET请求发送到服务器。而且,我还可以将带有空body标签的POST请求发送到服务器。

现在,我正在尝试将以下JSON对象发送到服务器。

{

"title": "Mr.",

"first_name":"Nifras",

"last_name": "",

"email": "nfil@gmail.com",

"contact_number": "75832366",

"billing_address": "",

"connected_via":"Application"

}

为此,我尝试添加OkHttpClient库类,RequestBody但无法将JSON对象作为http

POST请求的主体发送。我尝试通过以下方式构建主体并处理发布请求。

OkHttpClient client = new OkHttpClient();

RequestBody body = new RequestBody() {

@Override

public MediaType contentType() {

return ApplicationContants.JSON;

}

@Override

public void writeTo(BufferedSink sink) throws IOException {

// This is the place to add json I thought. But How could i do this

}

};

Request request = new Request.Builder()

.url(ApplicationContants.BASE_URL + ApplicationContants.CUSTOMER_URL)

.post(body)

.build();

通过POST请求将JSON对象发送到服务器的方式是什么。

提前致谢。

回答:

试试这个

添加Gradle取决于 compile 'com.squareup.okhttp3:okhttp:3.2.0'

public static JSONObject foo(String url, JSONObject json) {

JSONObject jsonObjectResp = null;

try {

MediaType JSON = MediaType.parse("application/json; charset=utf-8");

OkHttpClient client = new OkHttpClient();

okhttp3.RequestBody body = RequestBody.create(JSON, json.toString());

okhttp3.Request request = new okhttp3.Request.Builder()

.url(url)

.post(body)

.build();

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

String networkResp = response.body().string();

if (!networkResp.isEmpty()) {

jsonObjectResp = parseJSONStringToJSONObject(networkResp);

}

} catch (Exception ex) {

String err = String.format("{\"result\":\"false\",\"error\":\"%s\"}", ex.getMessage());

jsonObjectResp = parseJSONStringToJSONObject(err);

}

return jsonObjectResp;

}

解析响应

   private static JSONObject parseJSONStringToJSONObject(final String strr) {

JSONObject response = null;

try {

response = new JSONObject(strr);

} catch (Exception ex) {

// Log.e("Could not parse malformed JSON: \"" + json + "\"");

try {

response = new JSONObject();

response.put("result", "failed");

response.put("data", strr);

response.put("error", ex.getMessage());

} catch (Exception exx) {

}

}

return response;

}

以上是 在Android的OKhttp中通过POST请求发送JSON正文 的全部内容, 来源链接: utcz.com/qa/430601.html

回到顶部