【问题标题】:HTTP connection in Blackberry with username and password credentials?黑莓中带有用户名和密码凭据的HTTP连接?
【发布时间】:2012-11-02 12:06:06
【问题描述】:

我设计了一个使用 Web 视图的应用程序。我的应用程序必须在打开时访问客户的站点。因此,我需要创建一个 Http Connection,它应该使用用户名和密码进行验证,并捕获来自服务器的响应并使用该响应加载内容。我一直在尝试做但无法弄清楚。请在这个问题上帮助我。请用一些代码解释一下。

这就是我试图建立一个 Http 连接但它正在抛出 401 响应代码。我认为问题是,它没有将我输入到编码器中的凭据获取。

HttpConnection httpConn=null;
DataInputStream dis=null;
DataOutputStream dos = null;

URLEncodedPostData encPostData = new URLEncodedPostData(null, false);
encPostData.append("username", PasswordPopupScreen._response2);
encPostData.append("password", PasswordPopupScreen._response3);

try {
    httpConn=(HttpConnection)Connector.open("myclient's siteURL");
    httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_TYPE,
                                HttpProtocolConstants.CONTENT_TYPE_APPLICATION_X_WWW_FORM_URLENCODED);
    httpConn.setRequestProperty(HttpProtocolConstants.HEADER_CONTENT_LENGTH,
                                String.valueOf(encPostData.getBytes().length));
    dos=httpConn.openDataOutputStream();
    dos.write(encPostData.getBytes());
    if(httpConn.getResponseCode()==HttpConnection.HTTP_OK)
    {
        //Dialog.alert("Success");
        System.out.println("Success");
    }
    else
    {
        // Dialog.alert("failed");
        System.out.println("failed");
    }
} catch (IOException e) {
    e.printStackTrace();
}

为什么响应是 401?这意味着未经授权的访问,但我有权查看我客户的网站。据我所知,问题是,请求没有附加用户名和密码。请帮助我在请求中添加凭据。我的客户服务器采用 NTLM 身份验证。

【问题讨论】:

标签: blackberry


【解决方案1】:

您好,请参阅此知识库文章以访问 HTTP 授权..

http://supportforums.blackberry.com/t5/Java-Development/Implement-basic-HTTP-authentication/ta-p/445920

您需要在您的 HTTP 身份验证请求中添加这些行。

String login = "username:password";

//Close the connection.
s.close();

//Encode the login information in Base64 format.
byte[] encoded = Base64OutputStream.encode(login.getBytes(), 0, login.length(), 
                                           false, false);

//Open a new connection.
s = (StreamConnection)Connector.open("http://mysite.com/myProtectedFile.txt ");
httpConn = (HttpConnection)s;

//Add the authorized header.
httpConn.setRequestProperty("Authorization", "Basic " + new String(encoded));

【讨论】:

  • 这不起作用。我的服务器需要 NTLM 身份验证。即使凭据错误,上面的代码也会收到 200 的响应。
猜你喜欢
  • 1970-01-01
  • 2011-08-31
  • 2013-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-05-28
相关资源
最近更新 更多