我正在开发一款Balckberry移动应用程序。它获取一些数据并使用java.io.OutputStream
对象将其发布到javax.microedition.io.Connection
上的服务器应用程序。虽然我为Connection
设置了“Content-Type”属性,但仍无法在服务器端获取正确的编码字符串
请注意:
UTF-8
编码的字符串,我已经验证过了
使用Poster OutputStream
之前在客户端正确编码,因为我可以在调试模式下看到它任何人都可以找到故障以下是代码。
// Client side code
// xml is String xml and is correctly encoded, I can see Arabic or Chinese character it in debug mode
byte[] requestByte = xml.getBytes();
// compress request bytes array
// initialize connection
// set connection properties
con.setRequestMethod(HttpConnection.POST);
con.setRequestProperty("User-Agent", "Profile/MIDP-2.0 Configuration/CLDC-1.0");
con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
con.setRequestProperty("Content-Encoding", "UTF-8");
os = con.openOutputStream();
InputStream in = new ByteArrayInputStream(requestByte);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = in.read(buffer)) > 0) {
os.write(buffer, 0, bytesRead);
}
答案 0 :(得分:2)
一些事情:
1)我假设你称之为xml的变量实际上是一个String。在这种情况下你真正想要的是
byte [] requestByte = xml.getBytes(“UTF-8”);
2)这里似乎有一些冗余代码:
InputStream in = new ByteArrayInputStream(requestByte);
byte[] buffer = new byte[4096];
int bytesRead = 0;
while ((bytesRead = in.read(buffer)) > 0) {
os.write(buffer, 0, bytesRead);
}
为什么不用以下内容替换所有这些:
os.write(requestByte,0,requestByte.length);