blackberry - 我正在通过 HTTPS 发送数据,但服务器端说它没有收到它

标签 blackberry java-me blackberry-eclipse-plugin

我创建了一个将一些数据发送到安全网络的应用程序。

在服务器端,他们需要数据作为 JSON 对象。为此,我将数据创建为 JSON 对象并将该数据写入连接的 OutputStream

但是服务器端的响应告诉它没有获取我传递的数据。

我使用的代码片段如下所示:

HttpsConnection _connection = (HttpsConnection)Connector.open("https://gmail.com/",Connector.READ_WRITE, true);             _connection.setRequestMethod(HttpsConnection.POST);
_connection.setRequestProperty("If-Modified-Since", "29 Oct 1999 19:43:31 GMT");
_connection.setRequestProperty("User-Agent","Profile/MIDP-2.0 Configuration/CLDC-1.0");
_connection.setRequestProperty("Content-Language", "en-US");
_connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
byte[] postData = jsonObject.toString().getBytes("UTF-8");
_connection.setRequestProperty("Content-Length", Integer.toString(postData.length));
_connection.setRequestProperty("jsondata",jsonObject.toString());
OutputStream os = _connection.openOutputStream();
os.write(postData);
os.flush();

请帮我解决这个问题。

最佳答案

我猜原因是 "Content-Type"=> "application/x-www-form-urlencoded"。这种类型的 POST 用于发送 key=value 对列表。因此服务器端将根据 key=value 对解析发布数据。我相信在你的情况下它只是无法解析得到的发布数据,因为你没有以 key=value 对形式发送数据(相反你只是将整个 json 字符串 jsonObject .toString().getBytes("UTF-8") 在里面)。

所以基本上你需要形成一个键值对“json=YOUR_JSON_HERE”。然后在服务器上你会得到你的数据作为 json 参数值:

URLEncodedPostData encPostData = new URLEncodedPostData("UTF-8", false);
encPostData.append("json", jsonObject.toString());
byte[] postData = encPostData.toString().getBytes("UTF-8");

另一种选择(顺便说一句,这将是执行此特定任务的最合适方法)是使用“multipart/form-data”POST 类型。但是,如果您以前从未在 BB 上做过,那么实现起来会有点困难。

关于blackberry - 我正在通过 HTTPS 发送数据,但服务器端说它没有收到它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549618/

相关文章:

blackberry - "getLocation() method cannot be called from event thread"

java-me - j2me 中许多 Displayable 对象的一个​​ itemStateChanged 方法

Blackberry Apps - 将代码签名的 jar 导入应用程序项目

Blackberry - 在 Mac OSX 上的 Eclipse 上找不到 "Run on simulator"选项

blackberry - 如果两个进程都接收到对同一个对象的引用,他们会在 java 中同步它吗?

黑莓:提前显示警报/状态/对话框并退出

java - 如何在 Blackberry Java 中设置区域设置(将日期更改为西类牙语)

java - 短信如何存储在手机中?

java - 在j2me lwuit中,使用主题组合框下拉,其他组件将隐藏

java - 在黑莓中将自定义浏览器设置为默认浏览器