2017-08-28 35 views
0

我有一個自定義的JSON請求類的Android應用程序的多部分文件上傳到服務器這一類,它工作正常,當我添加了英語單詞鍵和值(這些鍵和值的一部分),但是當我使用任何阿拉伯文字,它會寫出「D * F * 9」之類的未知單詞。
在我將這些值寫入ByteArrayOutputStream對象之前,每件事都可以正常工作,並且我可以看到阿拉伯語單詞。
這是爲所有類
如何將非英文單詞作爲文本部分添加到抽排庫中的多部分請求中?

@Override 
public String getBodyContentType() { 
    return "multipart/form-data;charset=UTF-8;boundary=" + boundary; 
    //return "application/json; charset=UTF-8"; 
    //return "multipart/form-data; charset=UTF-8"; 
} 



這裏得到正文內容類型的方法是構建文本部件的方法來構建文本部分

private void buildTextPart(DataOutputStream dataOutputStream, String parameterName, String parameterValue) throws IOException { 
    dataOutputStream.writeBytes(twoHyphens + boundary + lineEnd); 
    //dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"" + parameterName + "\"" + lineEnd); 
    dataOutputStream.writeBytes("Content-Disposition: form-data; name=\"" + parameterName + "\"" + lineEnd); 
    dataOutputStream.writeBytes("Content-Type: text/plain; charset=UTF-8" + lineEnd); 
    //dataOutputStream.writeBytes("Content-Type: application/json; charset=UTF-8" + lineEnd); 
    Log.d("inside buildText", parameterName + " " + parameterValue); 
    dataOutputStream.writeBytes(lineEnd); 
    dataOutputStream.writeBytes(parameterValue + lineEnd); 
} 



這裏代碼我使用調試這些值

// just for debugging 
     DataInputStream in = new DataInputStream(new ByteArrayInputStream (bos.toByteArray())); 
     Scanner scanner = new Scanner(in); 
     while (scanner.hasNext()){ 
      Log.d("scanner ", scanner.next()); 
     } 




我看過這個RFC document但我不明白Content-Disposition的目的是什麼,它的意思是什麼。


我應該在此代碼正確地得到阿拉伯值修改?

我應該改變內容類型中的所有部件或我可以讓每一個部分都有它的內容類型?

任何幫助PLZ?

+0

'上傳多部分文件到服務器'?什麼是多部分文件? – greenapps

+0

第一部分有一個圖像,另一個有一些鍵和值。 –

+0

一個文件看起來像那樣?不這麼認爲。 – greenapps

回答

0

最後我找到了答案,這個問題是在這條線

dataOutputStream.writeBytes(parameterValue + lineEnd); 

所以我更新了它

dataOutputStream.write(parameterValue.getBytes("utf-8")); 
dataOutputStream.writeBytes(lineEnd); 

獲得所有聯合國ASCII字符,而現在它工作正常所有語言。

相關問題