Java okhttp表单数据的不必要转义

Java okhttp表单数据的不必要转义,java,json,okhttp,Java,Json,Okhttp,我正在尝试使用okhttp构建post请求,以向现有服务发送JSON。但是,当我试图发送表单时,okhttp会转义JSON中的所有特殊字符,但服务器编码为只接受它,而不是转义 String msg = "{SomeJsonMsg:...}"; FormEncodingBuilder b = new FormEncodingBuilder(); b.addEncoded( msg, "" ); RequestBody form_body = b.build(); 使用wireshark,我尝试重

我正在尝试使用okhttp构建post请求,以向现有服务发送JSON。但是,当我试图发送表单时,okhttp会转义JSON中的所有特殊字符,但服务器编码为只接受它,而不是转义

String msg = "{SomeJsonMsg:...}";
FormEncodingBuilder b = new FormEncodingBuilder();
b.addEncoded( msg, "" );
RequestBody form_body = b.build();
使用wireshark,我尝试重新编码的应用程序显示以下内容(即一个好的呼叫):

但是上面的java代码转储了这个(错误的调用):


是否仍然可以使用okhttp执行此操作?我试过b.add(msg,“”)和b.addEncoded(msg,“”)——实际上无法区分两者之间的区别,java文档也没有说明这两个调用。

您使用的是HTML表单编码,但您需要一个常规的HTTP请求正文

替换此项:

FormEncodingBuilder b = new FormEncodingBuilder();
b.addEncoded( msg, "" );
RequestBody form_body = b.build();
为此:

MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, msg); 
FormEncodingBuilder b = new FormEncodingBuilder();
b.addEncoded( msg, "" );
RequestBody form_body = b.build();
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(JSON, msg);