黑莓手机中的Http POST

时间:2011-05-31 07:21:48

标签: java blackberry blackberry-simulator blackberry-eclipse-plugin blackberry-jde

问候,

我正在尝试从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());
            }
        }

这是我用来获取响应代码的代码。 如果有人可以帮助我如何向服务器发出POST请求,我将不胜感激。 状态的服务器URL是company.com/app/version/stats

当它注册时它会 company.com/app/register

谢谢

2 个答案:

答案 0 :(得分:6)

您使用什么类型的POST?如果您只是传递键值对,那么它应该是“application / x-www-form-urlencoded”内容类型的POST。

那么,缺少你代码的是:

1)。在您的连接上设置适当的内容类型:

httpConn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

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");

3)。设置连接的内容长度(此步骤可以是可选的 - 首先尝试没有这个,可能BB OS足够聪明,可以自动设置):

httpConn.setRequestProperty("Content-Length", String.valueOf(postData.length));

4)。打开一个OutputStream并将内容写入其中(代码被简化):

OutputStream os = httpConn.openOutputStream();
os.write(postData);
os.flush();

答案 1 :(得分:1)

 ...
httpConn = (HttpConnection)connDesc.getConnection();    
httpConn.setRequestMethod(HttpConnection.POST);
httpConn.setRequestProperty("username",name);
httpConn.setRequestProperty("password",pass);
....