【发布时间】:2017-05-25 13:51:39
【问题描述】:
我必须通过 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 {颜色:栗色}
您无权查看此页面
您无权使用您提供的凭据查看此目录或页面,因为您的 Web 浏览器正在发送 Web 服务器未发送的 WWW-Authenticate 标头字段配置为接受。
请尝试以下方法:
- 如果您认为应该能够查看此目录或页面,请与网站管理员联系。
- 单击刷新按钮以使用不同的凭据重试。
HTTP 错误 401.2 - 未经授权:访问因服务器配置而被拒绝。
Internet 信息服务 (IIS)
技术信息(供支持人员使用)
我无法使用 SOAP UI 访问结果
- 转到Microsoft Product Support Services 并执行对HTTP 和401 词的标题搜索。
- 打开可在 IIS 管理器 (inetmgr) 中访问的 IIS 帮助,然后搜索标题为 关于安全、身份验证 和 关于自定义错误消息。
我真的卡住了,我尝试使用 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());
}
}
【问题讨论】:
标签: web-services jersey-2.0 apache-httpclient-4.x