2017-08-28 33 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字符,而现在它工作正常所有语言。

相关问题