0
我的Java應用程序有一個非常有趣的問題。我正在嘗試創建一個SOAP客戶端,但我不想使用內置或任何其他外部庫來使其工作。我想了解它是如何工作的,並設置所有請求和標題信息。用Java編程的SOAP客戶端編程
該程序正在工作。我可以發送請求並獲得回覆。但是,當響應更大時,我會在xml響應中產生一些「垃圾」,它會創建一個新行並顯示字符串,例如:b50,51b,5a8,9ed或15b。這些字符串在響應中隨機地打破xml結構。
我的代碼是:
package soapclient.client;
import java.io.*;
import java.net.*;
/**
*
* @author stom7
*/
public class Client {
private BufferedReader _reader;
private DataOutputStream _writer;
private Socket _socket;
public void connect() {
try
{
_socket = new Socket("**.***.***.***", 80);
}
catch (Exception ex) {
System.out.println(ex.getMessage());
return;
}
System.out.println("Connected successfully!");
try
{
_reader = new BufferedReader(new InputStreamReader(_socket.getInputStream()));
_writer = new DataOutputStream(_socket.getOutputStream());
}
catch (IOException ex) {
System.out.println(ex.getMessage());
return;
}
System.out.println("Streams created successfully!");
String content = "The soap request in xml format";
String request = "POST the_path HTTP/1.1\r\n"
+ "Host: the_host\r\n"
+ "Content-Type: application/soap+xml; charset=utf-8\r\n"
+ "Content-Length: " + content.length() + "\r\n"
+ "\r\n"
+ content;
try {
_writer.writeBytes(request);
_writer.flush();
String line;
while ((line = _reader.readLine()) != null) {
System.out.println(line);
}
}
catch(IOException ex) {
System.out.println(ex.getMessage());
}
try
{
_reader.close();
_writer.close();
_socket.close();
}
catch (Exception ex) {
System.out.println(ex.getMessage());
}
}
}
即使在第一行有一個問題:
51b
<?xml version="1.0" encoding="UTF-8"?>
或者:
<xsd:element maxOccurs="1" minOccurs="1
b50
" name="in6" nillable="true" type="xsd:string"/>
謝謝!
你可以添加一個有問題的XML的樣本(只是打破XML的部分的一個片段)? – RonK
?爲什麼?你是否打算避開所有適合這項工作的圖書館? – bmargulies
我剛剛編輯了問題,以便您可以回覆。 – stomseven