使用OkHttpClient for Android POST大型JSON

时间:2016-07-01 10:35:56

标签: android json okhttp

我有一个将json发布到我的服务器的方法,方法如下

sync_urlBuilder = new StringBuilder(context.getResources().getString(R.string.transprocessorURL));
                    sync_urlBuilder.append("?str=" + URLEncoder.encode(json.toString(), "UTF-8").toString());
                    RequestBody body = RequestBody.create(JSON, String.valueOf(json));
                    Request okHttprequest = new Request.Builder()
                            .url(sync_urlBuilder.toString())
                            .post(body)
                            .build();
                    okHttpClient.newCall(okHttprequest).enqueue(this);

这样可以正常工作,但是当json主体的长度非常大时,URL超过了URL长度的8190 apache限制。我的问题是如何在不遇到HTTP错误414的情况下发布如此大的URL长度。

1 个答案:

答案 0 :(得分:0)

我最终通过调整我的代码来解决它,如下所示

                    RequestBody formBody = new FormBody.Builder()
                        .add("str", String.valueOf(json))
                        .build();
                    Request okHttprequest = new Request.Builder()
                            .url(context.getResources().getString(R.string.transprocessorURL))
                            .post(formBody)
                            .build();
                    okHttpClient.newCall(okHttprequest).enqueue(this);