0

任何人都知道为什么我会收到此错误。我正在尝试发送 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());

我已经尝试调试代码等,但仍然无法找到导致这种情况发生的可能原因。谁能帮我找出这个问题的原因和可能的解决方案?

4

2 回答 2

2

错误信息是:

服务器无法处理请求。--> 过程或函数“sp__LogMessage”需要参数“@pi_ClientID”,但未提供该参数。

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

于 2012-06-02T04:53:03.890 回答
1

从堆栈跟踪来看:

  1. 您的应用程序正在与 SOAP 服务通信
  2. SOAP 服务需要一个(XML 编码的)请求,其中包含一个不存在的参数。

但这与您的客户端代码正在执行的操作并不相符。事实上,您正在发送一个带有参数的 POST 请求,这将变成一个请求体,它可能被编码为application/x-www-form-urlencoded......而不是 XML。那是行不通的。

于 2012-06-02T06:39:23.453 回答