【问题标题】:Http POST in BlackBerry黑莓中的 Http POST
【发布时间】:2011-05-31 07:21:48
【问题描述】:

您好,

我正在尝试从我的 BlackBerry Application 设置服务器连接。我能够获得有关服务器状态的响应代码。现在我有一些值必须发布到服务器

它就像一个注册页面值(用户名、密码、年龄)必须发送到服务器。

        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

谢谢

【问题讨论】:

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


    【解决方案1】:

    您使用什么类型的 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 操作系统足够聪明,可以自动设置):

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

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

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

    【讨论】:

    • 嗨,它给出了空指针异常。与 OutputStream 和 postData 相关的东西,但 postData 有一些价值,我不知道为什么它会给出空指针异常。
    • @AhmadShahwaiz:请提出一个单独的 SO 问题,发布您的代码和堆栈跟踪。
    • @Archimed 如果你能回答这个问题,请告诉我,谢谢。 :stackoverflow.com/questions/13377021/…
    【解决方案2】:
     ...
    httpConn = (HttpConnection)connDesc.getConnection();    
    httpConn.setRequestMethod(HttpConnection.POST);
    httpConn.setRequestProperty("username",name);
    httpConn.setRequestProperty("password",pass);
    ....
    

    【讨论】:

    • 我得到了成功的响应代码,但值没有被添加到服务器..
    • 使用wireShark检查您发送的请求。如果正确,则错误在服务器端(可能您需要添加 User-Agent 或其他......)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-16
    • 2011-08-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多