代码之家  ›  专栏  ›  技术社区  ›  James

HTTP post请求失败

  •  0
  • James  · 技术社区  · 8 年前

    我编写了以下代码来向url发送post请求。当我运行代码时,我得到了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 回复  |  直到 8 年前
        1
  •  1
  •   Steven    8 年前

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