我必须通过java调用Web服务。当我点击浏览器中的Web服务URL时,它会询问用户名和密码,我可以看到结果, 但是当我尝试使用java代码调用它时,我得到的错误就像
您无权查看此页面BODY {font:8pt / 12pt verdana} H1 {font:13pt / 15pt verdana} H2 {font:8pt / 12pt verdana} A:link {color:red} A:visited { color:maroon}
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的Web浏览器正在发送WWW-Authenticate Web服务器未配置为接受的标头字段。
请尝试以下操作:
- 如果您认为应该能够查看此目录,请与网站管理员联系或页面。
- 单击“刷新”按钮以使用其他凭据重试。
HTTP错误401.2 - 未经授权:由于服务器配置,访问被拒绝。
Internet信息服务(IIS)
技术信息(针对支持人员)
- 转到Microsoft Product Support Services并执行标题搜索< b> HTTP 和 401 。
- 打开 IIS帮助,这是一个在IIS管理器(inetmgr)中可访问,并搜索标题为关于安全性,身份验证和关于自定义错误消息的主题。
< / UL> 我无法使用SOAP UI访问结果
我真的被卡住了,我尝试使用httpclient / jersey
请帮助我如何使用java代码发送用户名和密码
import org.apache.http.HttpResponse;
import org.apache.http.auth.AuthScope;
import org.apache.http.auth.NTCredentials;
import org.apache.http.auth.params.AuthPNames;
import org.apache.http.client.CredentialsProvider;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.AuthPolicy;
import org.apache.http.client.protocol.ClientContext;
import org.apache.http.impl.client.BasicCredentialsProvider;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.impl.conn.PoolingClientConnectionManager;
import org.apache.http.protocol.BasicHttpContext;
import org.apache.http.protocol.HttpContext;
public class NTLM_TRY2 {
/**
* @param args
*/
public static void main(String[] args) throws Exception{
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpget = new HttpGet("http://10.0.134.114/eBill/bpsWebService.asmx");
CredentialsProvider credsProvider = new BasicCredentialsProvider();
credsProvider.setCredentials(AuthScope.ANY,
new NTCredentials("abc", "acb@578", "", ""));
java.util.List<String> authtypes = new ArrayList<String>();
authtypes.add(AuthPolicy.NTLM);
authtypes.add(AuthPolicy.DIGEST);
authtypes.add(AuthPolicy.BASIC);
httpclient.getParams().setParameter(AuthPNames.PROXY_AUTH_PREF,
authtypes);
httpclient.getParams().setParameter(AuthPNames.TARGET_AUTH_PREF,
authtypes);
localContext.setAttribute(ClientContext.CREDS_PROVIDER, credsProvider);
HttpResponse response = httpclient.execute(httpget, localContext);
System.out.println("Response code: " + response.getStatusLine());
}
}
答案 0 :(得分:0)
如果是基本身份验证,则必须在请求的标头中向用户发送密码。
在SO中查看此问题。 Http Basic Authentication in Java using HttpClient?