Java 多协议和Json
我想将一个图像和一个JsonObject发送到一个具有多个部件的PHP服务器。 这是我的密码:Java 多协议和Json,java,android,json,upload,multipartentity,Java,Android,Json,Upload,Multipartentity,我想将一个图像和一个JsonObject发送到一个具有多个部件的PHP服务器。 这是我的密码: HttpClient httpClient = new DefaultHttpClient(); HttpPost httppost = new HttpPost(urlString); File file = new File(imageend); HttpResponse response = null; MultipartEntity mpEntity = new MultipartEntity
HttpClient httpClient = new DefaultHttpClient();
HttpPost httppost = new HttpPost(urlString);
File file = new File(imageend);
HttpResponse response = null;
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "image/jpeg");
StringBody sb;
try {
sb = new StringBody(json.toString());
mpEntity.addPart("foto", cbFile);
mpEntity.addPart("json", sb);
httppost.setEntity(mpEntity);
response = httpClient.execute(httppost);
我无法在php中阅读此内容,因为其格式如下:
{\"test1\":\"Z\",\"test2\":\"1\"}
由于反斜杠,我无法在php中阅读此内容。如果我在httppost和bytearrayentity上发布没有图像的json,则不会出现任何反斜杠,我没有问题。使用以下PHP:
string stripslashes ( string $str )
也许您可以在PHP端使用preg\u replace替换
\“
”,来替换\
如何创建json
对象?JSONObject json=new JSONObject();尝试{json.put(“test1”,test1.getText().toString());json.put(“test2”,test2.getText().toString());您能看到json.toString()
返回的是什么吗?是否包含这些反斜杠?可能您应该在您的stringbody中指定和编码?@Nikitabloglazov:好问题。我尝试了String test=json.toString();并且没有反斜杠!所以问题应该是StringBody!但是我如何读取StringBody?我切换了一个断点,但我看不到它。我尝试了这个方法,效果很好,但是如果我想上传一个带有飞溅的文本,它会将其删除,对吗?然后使用/\并删除slashif(get_magic_quotes_gpc()){function stripslashes_deep($value){$value=is_数组($value)?数组映射($stripslashes_deep',$value):stripslashes($value);返回$value;}$$POST=array_映射($stripslashes_deep',$_POST);$_GET=array_映射($stripslashes_deep',$_GET);$_COOKIE=array_映射($stripslashes_deep',$_COOKIE)$\u REQUEST=array\u map('stripslashes\u deep',$\u REQUEST);}好的,这是一个好主意。但是有没有可能在Java中解决这个问题,即它在创建StringBody时不会设置飞溅?我们最近在一台旧服务器上遇到了同样的问题。服务器自动插入了反斜杠。安装的PHP版本是5.3.6。我们可以在PHP版本5.3.10及更高版本上验证反斜杠他失踪了。这种行为的确切原因还不清楚