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条)

报告相同问题?

悬赏问题

  • ¥15 求学软件的前人们指明方向🥺
  • ¥50 如何增强飞上天的树莓派的热点信号强度,以使得笔记本可以在地面实现远程桌面连接
  • ¥15 MCNP里如何定义多个源?
  • ¥20 双层网络上信息-疾病传播
  • ¥50 paddlepaddle pinn
  • ¥20 idea运行测试代码报错问题
  • ¥15 网络监控:网络故障告警通知
  • ¥15 django项目运行报编码错误
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services