HTTP发布请求失败

时间:2017-10-05 19:47:35

标签: java http http-post soapui

我写了下面的代码来发送邮件请求到网址。当我运行代码时,我得到500错误代码。但是,当我在SOAP UI中使用以下标题尝试相同的URL时,我得到了响应。我可以知道我的代码有什么问题。提前致谢。我怀疑我没有正确添加标题。

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:arm="http://siebel.com/Webservice">
        <soapenv:Header>
               <UsernameToken xmlns="http://siebel.com/webservices">username</UsernameToken>
               <PasswordText xmlns="http://siebel.com/webservices">password</PasswordText>
               <SessionType xmlns="http://siebel.com/webservices">Stateless</SessionType>   
            </soapenv:Header>
          <soapenv:Body>
             <arm:QueryList_Input>
                <arm:SRNum></arm:SRNum>
             </arm:QueryList_Input>
          </soapenv:Body>
        </soapenv:Envelope> 

以下是我的代码。

        package com.siebel.Webservice;

    import java.io.BufferedReader;
    import java.io.DataOutputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;

    import javax.net.ssl.HttpsURLConnection;

    public class HttpQueryList {
        private final String USER_AGENT = "Mozilla/5.0";

        public static void main(String[] args) throws Exception {

            HttpQueryList http = new HttpQueryList();



            System.out.println("\nTesting 2 - Send Http POST request");
            http.sendPost();

        }



        // HTTP POST request
        private void sendPost() throws Exception {

            String url = "https://mywebsite.org/start.swe";
            URL obj = new URL(url);
            HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

            //add reuqest header
            con.setRequestMethod("POST");
            con.setRequestProperty("UsernameToken", "username");
            con.setRequestProperty("PasswordText", "password");

            String urlParameters = "SWEExtSource=WebService&SWEExtCmd=Execute&WSSOAP=1";

            // Send post request
            con.setDoOutput(true);
            DataOutputStream wr = new DataOutputStream(con.getOutputStream());
            wr.writeBytes(urlParameters);
            wr.flush();
            wr.close();

            int responseCode = con.getResponseCode();
            System.out.println("\nSending 'POST' request to URL : " + url);
            System.out.println("Post parameters : " + urlParameters);
            System.out.println("Response Code : " + responseCode);

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();

            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();

            //print result
            System.out.println(response.toString());

        }

    }

1 个答案:

答案 0 :(得分:1)

在XML中,您指定了一个令牌。当我使用SOAP UI完成此操作时,我有一个我使用的证书文件。就我而言,我把它放在我的C:\ Program Files(x86)\ SmartBear \ SoapUI-5.2.1 \ bin文件夹中。然后我配置了SOAP UI来使用它。你有证书吗?如果是的话,你引用它吗?