2014-10-30 10 views
0

Я пытаюсь запустить запрос на мыло в базовом HTTP-запросе ... естественно, я пытался с помощью внешних инструментов послать сообщение и правильно, как конечная точка, которую я использую в качестве targetUrl, wsdl в чем-то вродеHttpURLConnection всегда возвращает ошибку 500

http://00.00.00.00/a-ws/services/basic?wsdl 

и моей фактической конечной точке

http://00.00.00.00/a-ws/services/basic.targetservice 

и я использую этот последний в качестве целевого URL

  URL url = new URL(targetUrl); 
      connection = (HttpURLConnection)url.openConnection(); 
      connection.setRequestMethod("POST"); 
      connection.setRequestProperty("Content-Type", "text/xml;charset=UTF-8"); 
      connection.setRequestProperty("SOAPAction", action); 
      connection.setRequestProperty("User-Agent", "myagent"); 
      connection.setRequestProperty("Host", "localhost"); 
      //connection.setRequestProperty("Content-Length", "" + Integer.toString(message.getBytes().length)); 

      connection.setUseCaches (false); 
      connection.setDoInput(true); 
      connection.setDoOutput(true); 

      //Send request 
      OutputStream wr = connection.getOutputStream(); 
      wr.write (message.getBytes()); 
      wr.flush(); 
      wr.close(); 

      //Get Response  
      InputStream is = connection.getInputStream(); 
      BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 
      String line=null; 
      StringBuffer response = new StringBuffer(); 
      while((line = rd.readLine()) != null) { 
       if (line!=null) 
        response.append(line); 
      } 
      rd.close(); 
      return response.toString(); 

сырье сообщение проверяется с хромированной плагин, единственное, что я не могу тест заголовки, но результат всегда исключение на getInputStream

java.io.IOException: Server returned HTTP response code: 500 for URL: 

почему?

+0

Ошибка 500 - это ответ вашего сервера, вы должны выяснить, почему он вам пришёл. Может быть, он не получил то, что он ожидает (данные?) – yunandtidus

+0

Как уже было сказано, если я пытаюсь использовать одно и то же сообщение из плагина браузера, все работает .. это проблема с клиентом, сервер просто говорит, что не может обработать запрос по общей причине , возможно, кодирование, но я не могу понять, где и как –

+0

Для выполнения команды SOAP попробуйте использовать фреймворк - например http://cxf.apache.org/ - выполнение raw SOAP таким образом будет основываться на большом количестве шаблонов. Мы не можем быть уверены, почему сервер дает сообщение об ошибке. Возможно, вам нужно включить заголовок Accepts? –

ответ

1

Это была очень глупая проблема кодирования (как я предполагал) ... я не избежал двойной цитаты внутри сообщения.

Сведения о проблеме были видны с использованием фальшивого http-сервера, который просто отражает содержание эха.

UPDATE: Еще одна вещь, которую уже никто не указал, что полезно в случае исключения для получения

connection.getErrorStream()

, который содержит ответ в случае ошибки!

Смежные вопросы