gpt4 book ai didi

c# - 如何将 SOAP header 从客户端传递到 Web 服务

转载 作者:数据小太阳 更新时间:2023-10-29 03:02:10 26 4
gpt4 key购买 nike

我有一个 C# 客户端,Web 服务必须接收证书 header 。我不知道如何将 header 添加到 Web 服务。这是我的代码:

// Define a SOAP header by deriving from the SoapHeader base class.
// The header contains just one string value.
public class MyHeader : SoapHeader
{
public string MyValue;
}

public partial class Service: System.Web.UI.Page
{
MyWebService ESClient = new MyWebservice();
private static String TAG_CERTIFICATE = "MxIFZjFCBFa...";
protected void Page_Load(object sender, EventArgs e)
{
ServicePointManager.ServerCertificateValidationCallback = new RemoteCertificateValidationCallback(ValidateServerCertificate);
CredentialCache cache = new CredentialCache();

MyHeader header = new MyHeader();

// Populate the values of the SOAP header.
header.MyValue = TAG_CERTIFICATE;

//HOW CAN I ADD THIS CERTIFICATE TO MY ESCLIENT WEB SERVICE?????

//remSolSal is the response of the Web Service
remSolSal response= new remSolSal();
//remDatSol is the method of the Web Service and getRemSolEnt the parameters that I send in another function
response = ESClient.remDatSol(getRemSolEnt());
}

XML 模型证书:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sol="url...">
<soapenv:Header>
<certificate>
JgsJSP6Ql8f........
</certificate>

另外,我有一个 Java 客户端,它使我必须在 C# 中执行的操作。它使用此函数添加 header ,其中 paramName 是“证书”,paramContent 是值“JgsJSP6Ql8f ......”:

 /**
* This method adds a custom header to message.
*
* @param paramName
*/
private static void addHeaderParam(String paramName, String paramContent) {
try {
List<Header> headers = new ArrayList<Header>();
Header dummyHeader = new Header(new QName(TARGETNAMESPACE,
paramName), paramContent, new JAXBDataBinding(String.class));
headers.add(dummyHeader);

// client side:
((BindingProvider) port).getRequestContext().put(
Header.HEADER_LIST, headers);
} catch (JAXBException e) {
e.printStackTrace();
}
}

最佳答案

有很多方法可以实现您的要求,这取决于您的客户端设置方式以及您希望如何维护它。您使用的是服务引用吗?你想在配置或代码中管理它吗?插入自定义 header 的最简单方法是使用 <headers>此处引用的配置中端点配置中的元素: http://msdn.microsoft.com/en-us/library/ms731749(v=vs.110).aspx

我个人建议不要将证书的定义放在您的应用程序中,而是将其存储在服务器的 keystore 中。然后,您可以在应用于您的客户端的行为中引用该证书。您还可以使用代码提取证书,并通过引用 ESClient.ClientCredentials 对象执行您需要的操作。

关于c# - 如何将 SOAP header 从客户端传递到 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27551815/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com