发送POST到HTTPS - 逻辑问题

时间:2012-06-02 04:43:45

标签: java http post stored-procedures https

任何人都知道为什么我会收到此错误。我正在尝试发送POST请求,这是我收到的错误消息。

服务器响应:

Error while dispatching hrxml [ Server was unable to process request. --> Procedure or function 'sp__LogMessage' expects parameter '@pi_ClientID', which was not supplied.   at System.Web.Services.Protocols.SoapHttpClientProtocol.ReadResponse(SoapClientMessage message, WebResponse response, Stream responseStream, Boolean asyncCall)
   at System.Web.Services.Protocols.SoapHttpClientProtocol.Invoke(String methodName, Object[] parameters)
   at DispatchService.HRISMessageRouter.MessageRouter.Route(String HRXML)
   at DispatchService.DispatchMessage.Dispatch(String HRXML)]

我的代码:

URL link = new URL("https://example.com/example.asp"); 
        HttpsURLConnection com = (HttpsURLConnection) link.openConnection();
                  String l;

        con.setRequestMethod("POST");
con.setDoInput(true); 
        con.setDoOutput(true);
        con.setRequestProperty("name", "rrrrr");
        con.setRequestProperty("pwd", "ffff");

        OutputStream os = con.getOutputStream();

        os.flush();

        InputStream is = con.getInputStream();

        BufferedReader rd = new BufferedReader(new InputStreamReader(is));

          StringBuffer r = new StringBuffer(); 

          while((l = rd.readLine()) != null) {

            r.append(l);

            r.append('\r');

          }

          rd.close();

          System.out.println("out "+ r.toString());

我已经尝试过调试代码等,但仍无法找到可能的原因来解决这个问题。任何人都可以帮我弄清楚这个问题的原因和可能的解决方案吗?

2 个答案:

答案 0 :(得分:2)

错误消息是:

  

服务器无法处理请求。 - >过程或函数'sp__LogMessage'需要参数'@pi_ClientID',这是未提供的。

这看起来像服务器上的SQL存储过程。检查以确保为其提供客户端ID。

答案 1 :(得分:1)

从堆栈跟踪判断:

  1. 您的应用程序正在与SOAP服务进行通信
  2. SOAP服务期望一个(XML编码的)请求,其中包含一个不存在的参数。
  3. 但这与客户端代码的作用无关。实际上,您正在发送带有参数的POST请求,这将变成一个请求体,可能编码为application/x-www-form-urlencoded ...而不是XML。那不行。