ala*_*ham 4 java blackberry blackberry-jde blackberry-simulator blackberry-eclipse-plugin
问候,
我正在尝试从BlackBerry Application设置服务器连接.我能够获得有关服务器状态的响应代码.现在我有一些值,我必须POST到服务器
它就像注册页面值(用户名,密码,年龄)必须发送到服务器.
ConnectionFactory connFact = new ConnectionFactory();
ConnectionDescriptor connDesc;
connDesc = connFact.getConnection(url);
if (connDesc != null)
{
HttpConnection httpConn;
httpConn = (HttpConnection)connDesc.getConnection();
try
{
final int iResponseCode = httpConn.getResponseCode();
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
Dialog.alert("Response code: " + Integer.toString(iResponseCode));
}
});
}
catch (IOException e)
{
System.err.println("Caught IOException: " + e.getMessage());
}
}
Run Code Online (Sandbox Code Playgroud)
那是我用来获取响应代码的代码.如果有人能帮助我如何向服务器发出POST请求,我将不胜感激.状态的服务器URL是company.com/app/version/stats
当它注册时,它将是company.com/app/register
谢谢
你使用什么类型的POST?如果您只是传递键值对,那么它应该是"application/x-www-form-urlencoded"内容类型的POST.
所以,缺少你的代码是:
1).在您的连接上设置适当的内容类型:
httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
Run Code Online (Sandbox Code Playgroud)
2).准备要通过POST发送到服务器的内容:
URLEncodedPostData encPostData = new URLEncodedPostData("UTF-8", false);
encPostData.append("username", username);
encPostData.append("password", password);
encPostData.append("age", age);
byte[] postData = encPostData.toString().getBytes("UTF-8");
Run Code Online (Sandbox Code Playgroud)
3).设置连接的内容长度(此步骤可能是可选的 - 首先尝试没有这个,可能BB OS足够聪明,可以自动设置):
httpConn.setRequestProperty("Content-Length", String.valueOf(postData.length));
Run Code Online (Sandbox Code Playgroud)
4).打开OutputStream并将内容写入其中(代码已简化):
OutputStream os = httpConn.openOutputStream();
os.write(postData);
os.flush();
Run Code Online (Sandbox Code Playgroud)