public class SimpleHTTPRequest {
String envelope1="<?xml version=\"1.0\" encoding=\"utf-8\"?>" +
"<soap:Envelope xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:tns=\"urn:insertdata\"" +
" targetNamespace=\"urn:insertdata\">"+
"<soap:Body>"+
"<insertdata>"+
"<name xsi:type=\"xsd:string\">ghjghj</name>"+
"<phone xsi:type=\"xsd:string\">1111</phone>"+
"<email xsi:type=\"xsd:string\">ascom</email>"+
"<score xsi:type=\"xsd:string\">12</score>"+
"</insertdata>"+
"</soap:Body>"+
"</soap:Envelope>";
/**
* @param args
*/
public static void main(String[] args) {
String url="http://url/iphone_soap_server.php/insertdata";
String soapAction="http://urkl/iphone_soap_server.php/insertdata/insertdata";
HttpURLConnection connection = null;
OutputStreamWriter wr = null;
BufferedReader rd = null;
StringBuilder sb = null;
String line = null;
URL serverAddress = null;
String data = "width=50&height=100";
try {
serverAddress = new URL("http://url/soap-server.php?wsdl");
connection = null;
//Set up the initial connection
connection = (HttpURLConnection)serverAddress.openConnection();
connection.setRequestMethod("POST");
connection.setDoOutput(true);
connection.setDoOutput(true);
OutputStreamWriter writer = new OutputStreamWriter(connection.getOutputStream());
writer.write(data);
writer.flush();
rd = new BufferedReader(new InputStreamReader(connection.getInputStream()));
sb = new StringBuilder();
while ((line = rd.readLine()) != null)
{
sb.append(line + '\n');
}
System.out.println(sb.toString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (ProtocolException e1) {
e1.printStackTrace();
} catch (IOException e2) {
e2.printStackTrace();
}
finally
{
//close the connection, set all objects to null
connection.disconnect();
rd = null;
sb = null;
wr = null;
connection = null;
}
}
}
我想要使用SOAP Web服务从Java,我可以在这个代码中使用Soap Action ... 在此先感谢.....
答案 0 :(得分:3)
使用SOAP over HTTP时,通常会将SOAP Action插入请求中的SOAPAction
HTTP标头中。请参阅此处的标准:http://www.w3.org/TR/2000/NOTE-SOAP-20000508/#_Toc478383528
SOAPAction HTTP请求标头字段可用于指示 SOAP HTTP请求的意图。该值是标识的URI 意图。 SOAP对格式或特异性没有限制 URI或它是可解析的。 HTTP客户端必须使用此标头 发出SOAP HTTP请求时的字段。
所以你想要的是(假设soapAction
设置为正确的值):
connection.setRequestProperty("SOAPAction", soapAction);