Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java连接重置_Java_Wcf_Soap - Fatal编程技术网

Java连接重置

Java连接重置,java,wcf,soap,Java,Wcf,Soap,我们正在使用SOAP1.1 我们还创建了一个WCF Web服务,它在SOAP UI中运行良好 当我们试图在java中通过SOAP获得响应时,连接已经建立,但没有收到任何数据 我们得到了这样的回应: HTTP/1.1 200 OK Content-Type: text/xml; charset=utf-8 Content-Encoding: gzip Vary: Accept-Encoding Server: Microsoft-IIS/7.5 X-Powered-By: ASP.NET Da

我们正在使用SOAP1.1 我们还创建了一个WCF Web服务,它在SOAP UI中运行良好 当我们试图在java中通过SOAP获得响应时,连接已经建立,但没有收到任何数据

我们得到了这样的回应:

HTTP/1.1 200 OK


Content-Type: text/xml; charset=utf-8
Content-Encoding: gzip
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Tue, 16 Oct 2012 12:05:28 GMT
Content-Length: 148
在此之后,未收到SOAP响应,并引发此错误:

ERROR : java.net.SocketException: Connection reset
at java.net.SocketInputStream.read(SocketInputStream.java:189)
at java.net.SocketInputStream.read(SocketInputStream.java:121)
at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:283)
at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
at java.io.InputStreamReader.read(InputStreamReader.java:184)
at java.io.BufferedReader.fill(BufferedReader.java:154)
at java.io.BufferedReader.readLine(BufferedReader.java:317)
at java.io.BufferedReader.readLine(BufferedReader.java:382)
at ICNumber.main(ICNumber.java:113)
以下是代码片段:

String SOAPRequest ="<soapenv:Envelope"+
"xmlns:soapenv"+
"=\"http://schemas.xmlsoap.org/soap/envelope/\" xmlns:tem=\"http://tempuri.org/\">"+
            "<soapenv:Header>"+
            "</soapenv:Header>"+
            "<soapenv:Body>"+
            "<tem:ICNumberValidation>"+
            "<tem:ICNumber>"+
            strIC+
            "</tem:ICNumber>"+
            "</tem:ICNumberValidation>"+
            "</soapenv:Body>"+
            "</soapenv:Envelope>";

    try {
        //Create socket
        String hostname = "192.168.1.xx";
        int port = 90;
        InetAddress  addr = InetAddress.getByName(hostname); 
        SocketAddress sockaddr = null;
        try
        {
            sockaddr = new InetSocketAddress(addr, (port));
        }
        catch(IllegalArgumentException e)
        {
            System.out.println("ErrorCode-6001");
        }
        Socket sock = new Socket();
        try 
        {
            sock.connect(sockaddr, 10000);
        }
        catch(Exception e)
        {
            System.out.println( "ErrorCode-6001");
        }

        //Send header
        String path = "/Service1.svc";
        BufferedWriter  wr = new BufferedWriter(new OutputStreamWriter(sock.getOutputStream(),"UTF-8"));
        // You can use "UTF8" for compatibility with the Microsoft virtual machine.
        wr.write("POST " + path + " HTTP/1.1\r\n");
        wr.write("Accept-Encoding: gzip,deflate\r\n");
        wr.write("Host: " + hostname + "\r\n");
        wr.write("Content-Length: " + SOAPRequest.length() + "\r\n");
        wr.write("Content-Type: text/xml; charset=\"utf-8\"\r\n");
        wr.write("SOAPAction: \"http://tempuri.org/IService1/ICNumberValidation\"\r\n");
        wr.write("Connection: Keep-Alive\r\n");
        wr.write("User-Agent: Apache-HttpClient/4.1.1 (java 1.5)\r\n");
        wr.write("\r\n");

        //Send data
        wr.write(SOAPRequest);
        wr.flush();

        //response read
        BufferedReader reader = new BufferedReader( new InputStreamReader( sock.getInputStream() ) );
        String line = "";
        String line2 = "";

        while((line = reader.readLine()) != null)
        {
            line2 = line2 + line+"\n";
            System.out.println(line2);
        }
        System.out.println(line2);
String SOAPRequest=“”+
""+
""+
""+
""+
""+
strIC+
""+
""+
""+
"";
试一试{
//创建套接字
字符串hostname=“192.168.1.xx”;
int端口=90;
InetAddress addr=InetAddress.getByName(主机名);
SocketAddress sockaddr=null;
尝试
{
sockaddr=新的InetSocketAddress(地址,(端口));
}
捕获(IllegalArgumentException e)
{
系统输出打印项次(“错误代码-6001”);
}
插座插座=新插座();
尝试
{
sock.connect(sockaddr,10000);
}
捕获(例外e)
{
系统输出打印项次(“错误代码-6001”);
}
//发送头
字符串路径=“/Service1.svc”;
BufferedWriter wr=新的BufferedWriter(新的OutputStreamWriter(sock.getOutputStream(),“UTF-8”);
//您可以使用“UTF8”与Microsoft虚拟机兼容。
write(“POST”+path+“HTTP/1.1\r\n”);
write(“接受编码:gzip,deflate\r\n”);
write(“主机:“+hostname+”\r\n”);
write(“内容长度:“+SOAPRequest.Length()+”\r\n”);
write(“内容类型:text/xml;字符集=\“utf-8\”\r\n”);
wr.write(“SOAPAction:\”http://tempuri.org/IService1/ICNumberValidation\“\r\n”);
write(“连接:保持活动\r\n”);
write(“用户代理:ApacheHttpClient/4.1.1(Java1.5)\r\n”);
wr.write(“\r\n”);
//发送数据
wr.write(SOAPRequest);
wr.flush();
//响应读取
BufferedReader=新的BufferedReader(新的InputStreamReader(sock.getInputStream());
字符串行=”;
字符串line2=“”;
而((line=reader.readLine())!=null)
{
line2=line2+line+“\n”;
系统输出打印项次(第2行);
}
系统输出打印项次(第2行);

你能发布相关代码吗?具体来说,你在哪里接受/创建连接,在哪里接收数据。你在使用什么Java SOAP库?@thegrinner:我已经在上面添加了代码片段itself@BenBurns:导入javax.xml.parsers.DocumentBuilder;导入javax.xml.parsers.DocumentBuilderFactory;导入org.w3c.dom.Document;导入org.w3c.dom.Element;导入org.w3c.dom.Node;导入org.w3c.dom.NodeList;导入org.xml.sax.InputSource;IIS事件日志中是否存在任何错误?