t1441332354 2018-04-02 07:50 采纳率: 71.8%
浏览 1873
已采纳

java访问WebService返回xml数据生成为本地文件

部分代码如下:
public class DomXMLString {

private static String SERVICES_HOST = "www.webxml.com.cn";

private static String NETDATA_URL = "http://183.131.242.70:8089/ship/interface/shipInfoService.asmx/getTask";

private static String LOCAL_PC_SAVEFILE_URL = "E:Myeclipse/sy_Task.xml";

private DomXMLString(){}

public static void main(String[] args)throws Exception {
    Document document = getTask(NETDATA_URL);
    helloOK(document,LOCAL_PC_SAVEFILE_URL);

}


private static Document getTask(String netXMLDataURL) {
    Document document = null;
    DocumentBuilderFactory documentBF = DocumentBuilderFactory.newInstance();
    documentBF.setNamespaceAware(true);
    try{
        DocumentBuilder documentB = documentBF.newDocumentBuilder();
        InputStream inputStream = getSoapInputStream(netXMLDataURL);
        document = documentB.parse(inputStream);
        inputStream.close();
    }catch(DOMException e){
        e.printStackTrace();
        return null;
    }catch(ParserConfigurationException e){
        e.printStackTrace();
        return null;
    }catch(SAXException e){
        e.printStackTrace();
        return null;
    }catch(IOException e){
        e.printStackTrace();
        return null;
    }
    return document;
}
运行提示错误为:
java.io.IOException: Server returned HTTP response code: 500 for URL: http://183.131.242.70:8089/ship/interface/shipInfoService.asmx/getTask
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1626)
at org.tempuri.DomXMLString.getSoapInputStream(DomXMLString.java:79)
at org.tempuri.DomXMLString.getTask(DomXMLString.java:52)
at org.tempuri.DomXMLString.main(DomXMLString.java:39)

Exception in thread "main" java.lang.IllegalArgumentException: InputStream cannot be null
at javax.xml.parsers.DocumentBuilder.parse(DocumentBuilder.java:117)
at org.tempuri.DomXMLString.getTask(DomXMLString.java:53)
at org.tempuri.DomXMLString.main(DomXMLString.java:39)
之前也查了一些资料,想请问是不是我设置的路径有问题以及解决办法,求大神指点迷津

  • 写回答

9条回答 默认 最新

  • qq_30954623 2018-04-02 08:07
    关注

    /**
    *

    * @param serviceUrl 服务名
    * @param nameSpace
    * @param methodName 执行的方法名
    * @param paremateArrs 参数数据数组
    * @param qNameArrs 变量数组
    * @return
    */

    public static Object CallSoapService(String serviceUrl ,String nameSpace,String methodName, Object[] paremateArrs,Object[] qNameArrs){

    String endPoint = serviceUrl;

    String actionUrl=nameSpace+methodName;

    Object returnObj = null;

    try{

    Service service = new Service();

    Call call = null;

    call = (Call)service.createCall();

            QName qName = new QName(nameSpace,methodName);   
            call.setOperationName(qName);  
            call.setSOAPActionURI(actionUrl);  
    
            for(int i=0,len=qNameArrs.length;i<len;i++){  
                 call.addParameter(new QName(nameSpace,qNameArrs[i].toString()), org.apache.axis.encoding.XMLType.XSD_STRING,  
                        javax.xml.rpc.ParameterMode.IN);   
            }  
            call.setReturnType(org.apache.axis.encoding.XMLType.XSD_STRING);  
            call.setTargetEndpointAddress(new URL(endPoint));   
            returnObj = call.invoke(paremateArrs);  
    
        }catch(Exception ie){  
            ie.printStackTrace();  
        }  
        System.out.println(returnObj);  
        return returnObj;  
    }
    

    // 调用获得智慧社区的新增的用户信息
    public static void main(String[] args) {

    String url="http://221.226.86.35/webservice/UserOUService.asmx";

    String method="GetFrameUserRecord";

    String parameter="2016-09-05";

    String namespace="http://tempuri.org/";

    CallSoapService(url,namespace,method,new Object[]{parameter},new Object[]{"date"});

    }

    public static void main(String[] args) {  
        String url="http://172.22.173.21:8086/xinfang/services/xfinfoPhone";  
        //方法名
        String method="queryByIdMydPj";  
        //参数
        String parameter="{'xfid':'NJ2016010103390'}";  
        //命名空间
        String namespace = "xfinfoPhoneService";
        //最后一个参数随便填
        CallSoapService(url,namespace,method,new Object[]{parameter},new Object[]{"asd"});  
    }  
    

    }

    这有短源码你参考一下,好像需要引入xfire jar包。很久了 记得不是很清楚了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(8条)

报告相同问题?

悬赏问题

  • ¥100 求数学坐标画圆以及直线的算法
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站