WSDL接口数据传递以及外网发布需要注意的地方

A系统传递数据给B系统

1、A创建asmx推送接口如下

using System;
using System.Collection.Generic;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Services;
using  Topevery.DUM.Report;
using Topevery.DUM.Report.Entity;
namespace Topevery.DUM.Report.ASMX
{
 ///<summary>
///PreEventFive的摘要说明
///</summary>
[WebService(Namespace="http://tempuri.org/")]
[WebServiceBinding(ConformsTo=WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
public class PreEventFive:System.Web.Services.WebService
{
    [WebMethod(Description="直接返回json")]
      public string GetPETable()
{
        DateTime now=DateTime.Now;
        DateTime d1=new DateTime(now.Year,now.Month,1);
        DateTime d2=DateTime.Now;
        DataTable dt=Broker.GetStatisTypeTop10(d1,d2,1,"2").Tables[0];
         int i=1;
         EventDataList DataSource =new EventDataList();
         List<Dictionary<string,object>>list =new List<Dictionary<string,object>>();
foreach(DataRow dr in dt.Rows)
{
     if(i<6)
{
      DataSource.SerialNumber.Add(i.ToString());
      DataSource.Name.Add(dr["C_Name"].ToString());
      DataSource.LNNUM.Add(dr["C_LA_NUM"].ToString());
}
i++;
}
//数组序列化转为json
     string jsonData2Tran =Newtonsoft.Json.JsonConvert.SerializeObject(DataSource);
     return jsonData2Tran;
}
}
}

2、B引用A接口,接受该服务数据

JNEvent.PreEventFive ef=new JNEvent.PreEventFive();
   string pe=ef.GetPETable();
   PreEventFive evt=Newtonsoft.Json.JsonConvert.DeserializeObject<PreEventFive>(pe);

3、发布需要注意的是右击B接口,修改属性-web引用url,将localhost改为外网IP

4、发布后需要在该站点下<system.web>中间配置如下信息,开启远程访问

<webServices>
     <protocols>
         <add name="HttpSoap"/>
         <add name="HttpPost"/>
         <add name="HttpGet"/>
        <add name="Documentation"/>
      </protocols>
 </webServices>

 

转载于:https://www.cnblogs.com/zzp0320/p/8286796.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
要使用wsdl4j实现Java调用WSDL接口需要先添加wsdl4j依赖包。可以从Maven中央仓库下载最新版本的wsdl4j包,或者直接从wsdl4j的官方网站下载。 下面是一个简单的示例代码,演示如何使用wsdl4j实现Java调用WSDL接口并解析返回数据格式: ```java import java.net.URL; import javax.xml.namespace.QName; import javax.xml.ws.Service; import org.apache.axis.client.Call; import org.apache.axis.client.Service; public class WSDLClient { public static void main(String[] args) throws Exception { URL url = new URL("http://localhost:8080/MyWebService?wsdl"); QName qname = new QName("http://webservice.example.com/", "MyWebService"); Service service = new Service(); Call call = (Call) service.createCall(); call.setTargetEndpointAddress(url); call.setOperationName(qname); // 调用接口方法 String result = (String) call.invoke(new Object[] {"World"}); // 解析返回数据 // TODO: 解析返回的XML数据 } } ``` 在上面的代码中,我们首先创建了一个`URL`对象,指向WSDL文件的地址。然后,我们使用`QName`对象指定了服务的命名空间和服务名称。接着,我们创建了一个`Service`对象,并调用`createCall()`方法创建了一个`Call`对象。我们使用`setTargetEndpointAddress()`方法设置了目标终端地址,使用`setOperationName()`方法设置了要调用的操作名称。 在调用接口方法时,我们使用`invoke()`方法调用接口方法,并将参数传递给该方法。方法返回的结果存储在`result`变量中。 在解析返回的数据时,我们需要根据具体的返回数据格式进行解析。通常情况下,返回的数据是一个XML格式的字符串,可以使用Java中自带的`javax.xml.parsers`包解析XML数据。例如,可以使用`DocumentBuilderFactory`和`DocumentBuilder`类来解析XML数据: ```java import javax.xml.parsers.DocumentBuilder; import javax.xml.parsers.DocumentBuilderFactory; import org.w3c.dom.Document; // 解析返回数据 DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); DocumentBuilder builder = factory.newDocumentBuilder(); Document document = builder.parse(new InputSource(new StringReader(result))); // TODO: 使用document对象解析XML数据 ``` 以上代码示例中,我们首先创建了一个`DocumentBuilderFactory`对象和一个`DocumentBuilder`对象。然后,我们使用`builder.parse()`方法将XML字符串转换为`Document`对象。最后,我们可以使用`document`对象来解析XML数据。 当然,具体的解析方式还需要根据具体的返回数据格式进行调整。以上仅为一个简单的示例。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值