В NetBeans я должен использовать следующий код:Получения ответного сообщения от WebService
public String launchRequest(String paramString)
{
URL localURL = new URL(paramString);
Object localObject1 = new Socket(localURL.getHost(), localURL.getPort());
Object localObject2 = "GET " + paramString + " HTTP/1.0";
localObject2 = (String)localObject2 + "\r\nAccept value: */*\r\n";
localObject2 = (String)localObject2 + "Host value: " + localURL.getHost() + ":" + localURL.getPort() + "\r\n";
Object localObject3 = new PrintWriter(((Socket)localObject1).getOutputStream(), true);
((PrintWriter)localObject3).println((String)localObject2);
((PrintWriter)localObject3).close();
((Socket)localObject1).close();
return "OK";}
Этот код предполагается вызвать WebService, созданный в C#, что делает операцию вставки в базе данных Oracle.
URL-адрес, который передается выглядит следующим образом:
http://192.168.88.29:443/RaduPestrea/Services/Ort.asmx/ORTRequest?callBackDisabled=true&siren=328812656&capId=1325369
Проблема заключается в том, что WebService не называется. GetOutputStream() перенастраивает OutputStream, который не имеет сообщения из WebService. Это составная часть webService:
namespace Services { /// /// Summary description for Service1. /// public class Ort : System.Web.Services.WebService { [WebMethod] public string ORTRequest(bool callBackDisabled, int siren, int capId) { Try{ ....... return "Success ReqId :" + reqNum; Catch(Exception ex) { return ex.ToString(); } } }
Проблема в том, что я не могу изменить этот код. Я надеюсь, что проблема связана с URL-адресом, который я отправил.
Любая помощь приветствуется. Спасибо.
Редактировать: Согласен, что это не самый красивый код. Задача состоит в том, что код Java должен вызывать WebService из этой ссылки URL. Эта ссылка должна вставить в базу данных. В базе данных нет новой записи. Я использую операторы return из WebService, чтобы убедиться, что он вызывается, но ничего не возвращается. Возможно, я ошибаюсь, так или иначе, чтобы проверить, что WebService был вызван успешно?
Если я использую следующий код, вызывается веб-служба и добавляется новая запись в базу данных.
<code>
localURL = new URL(paramString);
localObject1 = "";
localObject2 = localURL.openStream();
localObject3 = new InputStreamReader((InputStream)localObject2);
BufferedReader localBufferedReader = new BufferedReader((Reader)localObject3);
String str1;
while ((str1 = localBufferedReader.readLine()) != null)
{
String str2 = "";
localObject1 = (String)localObject1 + str2;
}
return (String)localObject1;
</code>
Предложение: объявите локальные переменные правильно, вместо того, чтобы объявлять все как «Объект», а затем бросать его для каждого использования. – dsh
Спасибо за совет. Это все еще не работает. Я знаю, что вы предложили лучшую практику, но это не мой код и технически мне не разрешено редактировать его. Я могу изменить только URL-адрес или WebService. Но, во-первых, я хочу понять, почему это не работает. Почему он даже не дает сообщение об ошибке. –
'getOutputStream()' возвращает 'OutputStream'. Не «ничего». Почему вы объявляете 'localObject3' как« объект », а затем бросаете его, это тайна. Неясно, что вы спрашиваете. – EJP