账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    java用soap方法调用C#写的webservice接口,需要得到的数据在C#方法的输出参数中,请问java怎么取到?
    44
    0

    下面是接口文档:
    Webservice地址:http://172.16.173.88:8081/Service1.asmx?wsdl
    统一调用方法名:
    string Request(string MethodName, string inParaXml, out ref string outParaXml)
    MethodName = 命名空间 + “.”+ 方法名
    Eg: 病人基本信息BRJBXX
    Request(“HisSvr.GetBRJBXXInfo” , inParaXml , out outParaXml)
    入参inParaXml :

    <?xml version='1.0' encoding='utf-8' ?>

     <Items>
         <Item>
             <strStartDate>2016-10-14 09:06:10</strStartDate>
            <strEndDate>2016-10-14 09:08:01</strEndDate>
            <strIndex>697386</strIndex>
            <strParm></strParm>
         </Item>
     </Items>

    出参<outParaXml>:
    <![CDATA[
    <?xml version='1.0' encoding='utf-8' ?>
    <DataSet>
    <TableName="BRJBXXList">
    <Row>
    <BAH>314586</BAH><ZYH>697386</ZYH><BFH>143</BFH><CWH>5B+37</CWH><GCYSBM></GCYSBM><GCYSMC></GCYSMC><RYRQ>2016/10/13 7:57:00</RYRQ><CYRQ>2016/10/17 16:54:27</CYRQ><BRXM>李宁宁</BRXM><BRXB>女</BRXB><CSRQ>1985/6/5 0:00:00</CSRQ><NL>31岁</NL><BRTZ>0</BRTZ><GMYWBM></GMYWBM><GMYWMC></GMYWMC><RYKSBM>264</RYKSBM><RYKSMC>产前</RYKSMC><DQKSBM>143</DQKSBM><DQKSMC>爱婴区</DQKSMC><CYKSBM>143</CYKSBM><CYKSMC>爱婴区</CYKSMC><RYZDBM></RYZDBM><RYZDMC></RYZDMC><SSZDBM></SSZDBM><SSZDMC></SSZDMC><BLZDBM></BLZDBM><BLZDMC></BLZDMC><GRZDBM></GRZDBM><GRZDMC></GRZDMC><CYZDBM>83895</CYZDBM><CYZDMC>轻度贫血</CYZDMC><JRZLBZ></JRZLBZ><GRBZ></GRBZ><XSRBZ></XSRBZ>
    </Row>
    </Table>
    </DataSet>
    ]]>
    </outParaXml>

    java调用方法为:

    public static void test3() {
        Service service = new Service();
        Call call;
        try {
            call = (Call) service.createCall();
    
            call.setTargetEndpointAddress(url);
            call.setUseSOAPAction(true);
            call.setSOAPActionURI(soapActionURI);
            call.setOperationName(new QName(namespace, methodName));
            call.addParameter(new QName(namespace, "MethodName"), XMLType.XSD_STRING,
                    ParameterMode.IN);// 接口的参数
            call.addParameter(new QName(namespace, "inParaXml"), XMLType.XSD_STRING,
                    ParameterMode.IN);// 接口的参数
            call.addParameter(new QName(namespace, "outParaXml"), XMLType.XSD_STRING,
                    ParameterMode.IN);// 接口的参数
            call.setReturnType(XMLType.XSD_STRING);
            String inparam = "<?xml version='1.0' encoding='utf-8' ?>"+
                    "<Items>"+
                        "<Item>"+
                            "<strStartDate>2016-10-14 09:06:10</strStartDate>"+
                            "<strEndDate>2016-10-14 09:08:01</strEndDate>"+
                            "<strIndex>697386</strIndex>"+
                            "<strParm></strParm>"+
                        "</Item>"+
                    "</Items>";
            String out=null;
            String result = (String) call.invoke(new Object[] {"HisSvr.GetBRJBXXInfo",inparam,out });
            System.out.println(out);
            System.out.println(result);
        } catch (ServiceException e) {
            e.printStackTrace();
        } catch (RemoteException e) {
            e.printStackTrace();
        }
    }
    
    

    现在接口是连接上的,但是我不知道怎么通过java取到C#输出参数中的值

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 采风西南 普通会员 1楼

      在Java中,你可以使用java.net.URL类来获取SOAP服务的URL,然后使用java.net.URLConnection类来建立到该URL的连接。然后,你可以使用java.net.URLConnection类的getInputStream()方法来获取到服务器的输入流,然后使用java.io.BufferedReader类来读取这个流中的数据。

      以下是一个简单的示例:

      ```java import java.io.BufferedReader; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection;

      public class Main { public static void main(String[] args) throws Exception { // 创建一个URL对象 URL url = new URL("http://example.com/service.asmx");

          // 创建一个URLConnection对象
          URLConnection connection = url.openConnection();
      
          // 创建一个BufferedReader对象
          BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
      
          // 遍历输入流中的每一行数据
          String line;
          while ((line = reader.readLine()) != null) {
              // 输出每一行数据
              System.out.println(line);
          }
      
          // 关闭输入流
          reader.close();
          connection.disconnect();
      }
      

      } ```

      在这个示例中,我们首先创建了一个URL对象,然后创建了一个URLConnection对象。然后,我们创建了一个BufferedReader对象,并使用connection.getInputStream()方法获取到服务器的输入流。然后,我们遍历输入流中的每一行数据,最后关闭输入流和连接。

      注意:这个示例假设你已经得到了一个有效的SOAP服务的URL,并且这个服务返回的是XML数据。如果你的服务返回的是其他类型的数据,你可能需要修改这个示例。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部