请问关于c的具体应用场景有哪些?

2026-04-29 02:253阅读0评论SEO教程
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计848个文字,预计阅读时间需要4分钟。

请问关于c的具体应用场景有哪些?

我一直在使用Web服务的属性,已经注意到`SoapHttpClientProtocol`类需要定义一个`WebServiceBinding`属性。针对这个问题,似乎无法直接在运行时修改该属性。为了实现运行时动态更改Web服务调用中的此属性,可以考虑以下方法:

1. 创建一个自定义的`SoapHttpClientProtocol`类,继承自原始的`SoapHttpClientProtocol`。

2.在自定义类中,覆盖需要修改的属性。

3.在运行时,创建自定义类的实例,并根据需要动态设置属性值。

以下是实现这一功能的示例代码:

java

import javax.xml.namespace.QName;import javax.xml.rpc.ServiceException;import javax.xml.rpc.http.HttpService;import javax.xml.rpc.soap.SOAPException;import javax.xml.rpc.soap.SOAPFaultException;

public class CustomSoapHttpClientProtocol extends SoapHttpClientProtocol { private WebServiceBinding webServiceBinding;

public CustomSoapHttpClientProtocol() { super(); this.webServiceBinding=new WebServiceBinding(); }

@Override public WebServiceBinding getWebServiceBinding() { return webServiceBinding; }

@Override public void setWebServiceBinding(WebServiceBinding webServiceBinding) { this.webServiceBinding=webServiceBinding; }

public static void main(String[] args) { try { CustomSoapHttpClientProtocol customProtocol=new CustomSoapHttpClientProtocol(); // 设置自定义的WebServiceBinding属性 customProtocol.setWebServiceBinding(new WebServiceBinding(new QName(http://example.com, newBinding)));

// 创建HttpService实例 HttpService httpService=new HttpService(); httpService.setServiceEndpointInterface(com.example.MyService); httpService.setPort(customProtocol);

// 进行Web服务调用 // ... } catch (ServiceException | SOAPException | SOAPFaultException e) { e.printStackTrace(); } }}

请问关于c的具体应用场景有哪些?

通过这种方式,您可以在运行时动态更改`WebServiceBinding`属性,从而实现动态Web服务调用。

我一直在使用Web服务上的属性,我已经看到SoapHttpClientProtocol类需要定义一个WebServiceBinding属性.

看到这个question似乎无法修改运行时的属性,如何实现动态Web服务调用在运行时更改此属性?可能吗?

[编辑]
我正在寻找一种方法来执行动态调用“泛型样式”,而不是修改WebServiceBinding属性.

简而言之,这是我的班级:

using System.Web.Services; using System.Web.Services.Protocols; namespace Whatever { [WebServiceBinding(Name = "", Namespace = "")] public class WebServiceInvoker : SoapHttpClientProtocol { public WebServiceInvoker(string url, string ns, string bindingName) { ChangeNamespace(ns); ChangeBinding(bindingName); Url = url; // credentials, etc } public void ChangeNamespace(string ns) { var att = GetType().GetCustomAttributes(typeof (WebServiceBindingAttribute), true); if (att.Length > 0) { // doesn't work ((WebServiceBindingAttribute)att[0]).Namespace = ns; } } private void ChangeBinding(string bindingName) { var att = GetType().GetCustomAttributes(typeof(WebServiceBindingAttribute), true); if (att.Length > 0) { // doesn't work ((WebServiceBindingAttribute)att[0]).Name = bindingName; } } public object[] MakeInvoke(string method, object[] args) { var res = Invoke(method, method); return res; } public TRet InvokeFunction<TRet>(string method) { //Funcion<T1, T2, T3, TRet> var res = Invoke(method, null); return MyUtils.ForceCast<TRet>(res); } public TRet InvokeFunction<T1, TRet>(string method, T1 par1) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1 }; var res = Invoke(method, args); return MyUtils.ForceCast<TRet>(res); } public TRet InvokeFunction<T1, T2, TRet>(string method, T1 par1, T2 par2) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1, par2 }; var res = Invoke(method, args); return MyUtils.ForceCast<TRet>(res); } public TRet InvokeFunction<T1, T2, T3, TRet>(string method, T1 par1, T2 par2, T3 par3) { //Funcion<T1, T2, T3, TRet> var args = new object[] {par1, par2, par3}; var res = Invoke(method, args); return MyUtils.ForceCast<TRet>(res); } public void InvokeAction(string metodo) { //Funcion<T1, T2, T3, TRet> Invoke(method, null); } public void InvokeAction<T1>(string method, T1 par1) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1 }; Invoke(method, args); } public void InvokeAction<T1, T2>(string method, T1 par1, T2 par2) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1, par2 }; Invoke(method, args); } public void InvokeAction<T1, T2, T3>(string method, T1 par1, T2 par2, T3 par3) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1, par2, par3 }; Invoke(method, args); } } }

[编辑]
我想这样打电话给我的班级:

var miProxy = new WebServiceInvoker("webServiceLocation", "ns", "Binding"); var res = miProxy.InvokeFunction<string, string, Entity>("MyWebMethod", stringPar1, stringPar2); 我不确定你要在这里完成什么…你是否正在尝试创建一个支持调用者调用任意方法的Web服务?如果是这样,这里有一个例子: Creating a dynamic Web service to simplify code

本文共计848个文字,预计阅读时间需要4分钟。

请问关于c的具体应用场景有哪些?

我一直在使用Web服务的属性,已经注意到`SoapHttpClientProtocol`类需要定义一个`WebServiceBinding`属性。针对这个问题,似乎无法直接在运行时修改该属性。为了实现运行时动态更改Web服务调用中的此属性,可以考虑以下方法:

1. 创建一个自定义的`SoapHttpClientProtocol`类,继承自原始的`SoapHttpClientProtocol`。

2.在自定义类中,覆盖需要修改的属性。

3.在运行时,创建自定义类的实例,并根据需要动态设置属性值。

以下是实现这一功能的示例代码:

java

import javax.xml.namespace.QName;import javax.xml.rpc.ServiceException;import javax.xml.rpc.http.HttpService;import javax.xml.rpc.soap.SOAPException;import javax.xml.rpc.soap.SOAPFaultException;

public class CustomSoapHttpClientProtocol extends SoapHttpClientProtocol { private WebServiceBinding webServiceBinding;

public CustomSoapHttpClientProtocol() { super(); this.webServiceBinding=new WebServiceBinding(); }

@Override public WebServiceBinding getWebServiceBinding() { return webServiceBinding; }

@Override public void setWebServiceBinding(WebServiceBinding webServiceBinding) { this.webServiceBinding=webServiceBinding; }

public static void main(String[] args) { try { CustomSoapHttpClientProtocol customProtocol=new CustomSoapHttpClientProtocol(); // 设置自定义的WebServiceBinding属性 customProtocol.setWebServiceBinding(new WebServiceBinding(new QName(http://example.com, newBinding)));

// 创建HttpService实例 HttpService httpService=new HttpService(); httpService.setServiceEndpointInterface(com.example.MyService); httpService.setPort(customProtocol);

// 进行Web服务调用 // ... } catch (ServiceException | SOAPException | SOAPFaultException e) { e.printStackTrace(); } }}

请问关于c的具体应用场景有哪些?

通过这种方式,您可以在运行时动态更改`WebServiceBinding`属性,从而实现动态Web服务调用。

我一直在使用Web服务上的属性,我已经看到SoapHttpClientProtocol类需要定义一个WebServiceBinding属性.

看到这个question似乎无法修改运行时的属性,如何实现动态Web服务调用在运行时更改此属性?可能吗?

[编辑]
我正在寻找一种方法来执行动态调用“泛型样式”,而不是修改WebServiceBinding属性.

简而言之,这是我的班级:

using System.Web.Services; using System.Web.Services.Protocols; namespace Whatever { [WebServiceBinding(Name = "", Namespace = "")] public class WebServiceInvoker : SoapHttpClientProtocol { public WebServiceInvoker(string url, string ns, string bindingName) { ChangeNamespace(ns); ChangeBinding(bindingName); Url = url; // credentials, etc } public void ChangeNamespace(string ns) { var att = GetType().GetCustomAttributes(typeof (WebServiceBindingAttribute), true); if (att.Length > 0) { // doesn't work ((WebServiceBindingAttribute)att[0]).Namespace = ns; } } private void ChangeBinding(string bindingName) { var att = GetType().GetCustomAttributes(typeof(WebServiceBindingAttribute), true); if (att.Length > 0) { // doesn't work ((WebServiceBindingAttribute)att[0]).Name = bindingName; } } public object[] MakeInvoke(string method, object[] args) { var res = Invoke(method, method); return res; } public TRet InvokeFunction<TRet>(string method) { //Funcion<T1, T2, T3, TRet> var res = Invoke(method, null); return MyUtils.ForceCast<TRet>(res); } public TRet InvokeFunction<T1, TRet>(string method, T1 par1) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1 }; var res = Invoke(method, args); return MyUtils.ForceCast<TRet>(res); } public TRet InvokeFunction<T1, T2, TRet>(string method, T1 par1, T2 par2) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1, par2 }; var res = Invoke(method, args); return MyUtils.ForceCast<TRet>(res); } public TRet InvokeFunction<T1, T2, T3, TRet>(string method, T1 par1, T2 par2, T3 par3) { //Funcion<T1, T2, T3, TRet> var args = new object[] {par1, par2, par3}; var res = Invoke(method, args); return MyUtils.ForceCast<TRet>(res); } public void InvokeAction(string metodo) { //Funcion<T1, T2, T3, TRet> Invoke(method, null); } public void InvokeAction<T1>(string method, T1 par1) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1 }; Invoke(method, args); } public void InvokeAction<T1, T2>(string method, T1 par1, T2 par2) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1, par2 }; Invoke(method, args); } public void InvokeAction<T1, T2, T3>(string method, T1 par1, T2 par2, T3 par3) { //Funcion<T1, T2, T3, TRet> var args = new object[] { par1, par2, par3 }; Invoke(method, args); } } }

[编辑]
我想这样打电话给我的班级:

var miProxy = new WebServiceInvoker("webServiceLocation", "ns", "Binding"); var res = miProxy.InvokeFunction<string, string, Entity>("MyWebMethod", stringPar1, stringPar2); 我不确定你要在这里完成什么…你是否正在尝试创建一个支持调用者调用任意方法的Web服务?如果是这样,这里有一个例子: Creating a dynamic Web service to simplify code