Web services 向Web服务代理添加自定义Http头

Web services 向Web服务代理添加自定义Http头,web-services,soap,asmx,Web Services,Soap,Asmx,我有一个旧的应用程序,它使用经典的Web服务代理与Java Web服务交互。不久前,Web服务宿主决定要求在每个请求中发送一个自定义HTTP头以访问服务,否则请求会被直接抛出(看起来这是某种路由器要求)。无论出于什么原因,我都需要向请求中注入自定义HTTP头 是否有任何方法可以与实际的Http客户端交互以执行添加自定义头之类的操作?您应该能够通过在单独的文件中的分部类中重写代理类的GetWebRequest方法来实现这一点。调用基类方法后,您应该能够修改返回的HttpWebRequest,然后从

我有一个旧的应用程序,它使用经典的Web服务代理与Java Web服务交互。不久前,Web服务宿主决定要求在每个请求中发送一个自定义HTTP头以访问服务,否则请求会被直接抛出(看起来这是某种路由器要求)。无论出于什么原因,我都需要向请求中注入自定义HTTP头


是否有任何方法可以与实际的Http客户端交互以执行添加自定义头之类的操作?

您应该能够通过在单独的文件中的分部类中重写代理类的
GetWebRequest
方法来实现这一点。调用基类方法后,您应该能够修改返回的HttpWebRequest,然后从方法返回:

public partial class MyServiceProxy {
    protected override WebRequest GetWebRequest(Uri uri) {
        HttpWebRequest request = (HttpWebRequest) base.GetWebRequest(uri);
        // do what you will with request.
        return request;
    }
}

是的,这就是诀窍。我基本上是通过代码生成代理的,通过添加headers属性,我能够生成类并注入一些代码来添加头,该属性在GetWebRequest中被选中并用于添加额外的头。很难看,但效果很好!谢谢你的解决方案。如何将此过程用于我的web服务客户端项目?@Jack:这是web服务客户端项目。另外,如果你有选择的话,你最好使用WCF。我也在开发客户端项目。如何使用此覆盖过程?@Jack-您可以将上述代码添加到新的类文件中(或者如果您知道您不会将服务重新生成到生成的服务类文件中)。它实际上是对生成的代理类的重写。只要确保类名和名称空间与生成的代理类相同即可。当我们的IT实现Apache mod_安全性时,我遇到了这个问题,该安全性正在寻找Accept头,并发现下面的投票结果最好的解决方案可以工作。