Java okhttp表单数据的不必要转义
我正在尝试使用okhttp构建post请求,以向现有服务发送JSON。但是,当我试图发送表单时,okhttp会转义JSON中的所有特殊字符,但服务器编码为只接受它,而不是转义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,我尝试重
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);