2012-11-20 40 views
4

我想發送一個圖像和一個JsonObject到一個帶有MultipartEntity的PHP服務器。 這裏是我的代碼:MultipartEntity和Json

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,則沒有任何反斜槓,我沒有問題。

+1

你是如何創建'json'對象的preg_replace取代? – MKJParekh

+0

JSONObject json = new JSONObject(); jQuery.put(「test1」,test1.getText()。toString());方法如下: json.put(「test2」,test2.getText()。toString()); – t18935

+0

你能看看'json.toString()'返回什麼嗎?是否包含這些反斜槓? –

回答

2

使用下面的PHP:

string stripslashes (string $str) 
+0

我試過這個,它的工作原理,但如果我想上傳一個文本與飛濺在它會刪除它們,對吧? – t18935

+0

然後使用/ \並刪除斜槓 – sachin10

+0

if(get_magic_quotes_gpc()){ 函數stripslashes_deep($ value) { $ value = is_array($ value)? array_map('stripslashes_deep',$ value): stripslashes($ value); return $ value; } $ _POST = array_map('stripslashes_deep',$ _POST); $ _GET = array_map('stripslashes_deep',$ _GET); $ _COOKIE = array_map('stripslashes_deep',$ _COOKIE); $ _REQUEST = array_map('stripslashes_deep',$ _REQUEST); } – sachin10

0

也許你可以只通過\"使用\在PHP端

+0

好吧,這是一個好主意。但是在Java中解決它的可能性不大,它在創建StringBody時不會設置飛濺? – t18935

+0

我們最近在舊的服務器機器上出現了同樣的問題。服務器自動插入反斜槓。安裝的PHP版本是5.3.6。我們可以驗證在PHP 5.3.10及更高版本上反斜槓消失。這種行爲的確切原因仍然未知 – maddob

相關問題