我设计了一个使用Web视图的应用程序。我的应用程序必须在打开时访问客户端的站点。所以,我需要建立一个Http连接,该连接应该使用用户名&用于验证和捕获来自服务器的响应并使用该响应加载内容的密码。我一直在尝试,但无法弄清楚。请帮我解决这个问题。请解释一些代码。
这是我尝试建立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 身份验证。
答案 0 :(得分:0)
您好请参阅此知识库文章以访问HTTP授权..
您需要在身份验证的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));