我在哪里可以放肥皂动作?

时间:2012-04-25 09:11:47

标签: java web-services soap

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 ... 在此先感谢.....

1 个答案:

答案 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);