2012-06-02 2 views
0

Кто-нибудь знает, почему я получаю эту ошибку. Я пытаюсь отправить запрос POST, и вот сообщение об ошибке, которое я получаю.Отправьте POST на HTTPS - Logic Issue

Ответ сервера:

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()); 

Я попытался отладки кода и т.д., но до сих пор не удалось найти возможную причину, почему это hapend. Может ли кто-нибудь помочь мне разобраться в причине и возможном решении этой проблемы?

ответ

1

Судя по StackTrace:

  1. Ваше приложение разговаривает сервис SOAP
  2. Служба SOAP ожидает в XML (кодируются) запрос, который включает в себя параметр, который не существует.

Но это не мешает тому, что делает клиентский код. Фактически вы отправляете запрос POST с параметрами, и это превратится в тело запроса, которое, вероятно, кодируется как application/x-www-form-urlencoded ... не XML. Это не сработает.

+0

Можете ли вы включить эту строку 'con.setRequestProperty (« Content-Type », \t \t« application/x- www-form-urlencoded ");'? Не могли бы вы показать мне пример, который объяснит ваш сценарий? –

+0

Добавление заголовка 'Content-type', вероятно, не поможет. Вероятно, этот запрос уже есть. Вам нужно узнать, что сервер действительно ожидает от вас отправить ... и отправить это. –

2

Сообщение об ошибке:

сервер не смог обработать запрос. -> Процедура или функция 'sp__LogMessage' ожидает параметра '@pi_ClientID', который не был указан.

Это похоже на хранимую процедуру SQL на сервере. Убедитесь, что клиентский ID предоставлен.

+0

Что вы имеете в виду предоставить ИТ-клиенту? Должен ли я передавать идентификатор клиента из моего кода на сервер? что-то вроде этого 'con.setRequestProperty (« ID »,« someID »);'? –

+0

Вам необходимо убедиться, что ваш звонок выполняет договор API, по которому вы отправляете запрос POST. Если это будет проверено, вам нужно будет увидеть, есть ли проблема на стороне сервера, не позволяя хранимой процедуре получить необходимый идентификатор клиента. Если у вас нет доступа к серверу, вам может быть не повезло. –

+0

Есть ли какой-нибудь симулятор, который я мог бы использовать для проверки работы веб-службы? Например, когда я набираю параметры, и симулятор отправляет POST, чтобы проверить, работает ли служба? –