java 跟.net webservice 互通问题(3)
跟国外公司的测试过程已经基本完成了,web service的互通问题也已经解决.
需要注意的是:
1,命名空间一定要一致
2,必须确保两种web service的soap 包格式相同.
下面用代码解释一下
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Description;
using System.Web.Services.Protocols;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;
using NLog;
namespace TestService
{
/// <summary>
/// Summary description for Service1
/// </summary>
[WebService(Namespace = "http://www.test.com/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
[SoapDocumentService(RoutingStyle = SoapServiceRoutingStyle.RequestElement, Use = SoapBindingUse.Literal)]
//[SoapRpcService(RoutingStyle = SoapServiceRoutingStyle.RequestElement, Use = SoapBindingUse.Literal)]
public class testService : System.Web.Services.WebService
{
[WebMethod]
[System.Web.Services.Protocols.SoapDocumentMethodAttribute("", Use = System.Web.Services.Description.SoapBindingUse.Literal, ParameterStyle = System.Web.Services.Protocols.SoapParameterStyle.Bare)]
[return: System.Xml.Serialization.XmlElementAttribute("outstr", Namespace = "http://www.test.com/")]
public string test([System.Xml.Serialization.XmlElementAttribute("input", Namespace = "http://www.test.com/")] string inputstr)
{
try
{
Logger log = LogManager.GetCurrentClassLogger();
#region 记录日志
if (inputstr!=null)
{
log.Info("inputstr=" +inputstr);
}
}
#endregion
return inputstr;
}
catch (Exception ex)
{
throw ex;
}
}
}
}
上边的代码是用nlog这个开源组件简单的记录了一个日志,我们可以定义webservice的命名空间和输入参数和返回参数的命名空间,来达到跟java一致.
黄色的部分代码是关键,这样做可以帮助你自定义soap 包格式,保持跟java一致.