【发布时间】:2011-10-19 03:59:34
【问题描述】:
嗨,我一直在尝试在 c# 中将 http 标头添加到 web 客户端,我找了很多地方,但运气不佳,经常有人指向 Credentials 类,但是我只有 ClientCredentials,我的客户也缺少 PreAuthenticate 字段?
该服务是用 Java 编写的,我可以向其中添加 http 标头,如下所示
reqHeaders.put(HEADER_NAME_USERNAME, Collections.singletonList(USER_NAME));
reqHeaders.put(HEADER_NAME_PASSWORD, Collections.singletonList(PASSWORD));
((BindingProvider) webWS).getRequestContext().put(MessageContext.HTTP_REQUEST_HEADERS,reqHeaders);
但是我不知道如何在 c# 中执行此操作,我尝试过端点地址生成器、ClientCredential、windows.ClientCredential,基本上我可以找到用户名和密码 当我在java中发出请求时,我在wireshark中捕获http数据包 看起来像这样
+hypertext transfer protocol
+POST
post stuff
Password: mypass
Username: username
soapaction: ... and so on
我无法更改服务器端代码,我只知道我是否可以添加两个标题,一个称为用户名和一个密码,其值将是 Sheening(阅读:获胜)
【问题讨论】:
-
您在为您的客户使用什么? WCF,SoapHttpClientProtocol(aka asmx),用 HttpWebRequest 滚动你自己的请求?
-
@CheeZe5 我通过在标准控制台应用程序项目中添加服务引用来访问它,而不是创建一个新的 Web 服务对象 ServiceReference1.WebsiteWSClient ws = nw .... 并像 ws 一样调用关闭请求。读取当前数据();
标签: c# web-services http http-headers http-authentication