Как передавать параметры в HTTP-адаптеры JS в MobileFirst 8

Адаптер JS

function getCitiesByCountry(countryName)

{ 

 var request =
    var request=
    <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:web="http://www.webserviceX.NET">
   <soapenv:Header/>
   <soapenv:Body>
      <web:GetCitiesByCountry>
         <!--Optional:-->
         <web:CountryName>INDIA</web:CountryName>
      </web:GetCitiesByCountry>
   </soapenv:Body>
</soapenv:Envelope>;

var input =

 {
    method: 'post',
    returnedContentType: 'xml',
    path: '/globalweather.asmx',
    body: {
        content: request.toString(),
        contentType: 'text/json; charset=utf-8'
    }
};
var result = MFP.Server.invokeHttp(input);
return result.Envelope.Body;
};

XML адаптера

<displayName>JavaScriptSOAP</displayName>
<description>JavaScriptSOAP</description>
<connectivity>
    <connectionPolicy xsi:type="http:HTTPConnectionPolicyType">
        <protocol>http</protocol>
        <domain>www.webservicex.net</domain>
        <port>80</port>
    </connectionPolicy>
</connectivity>

<procedure name="getCitiesByCountry" secured ="false"/>

Index.js

   function submitRequest()
 {
  var resourceRequest = new             WLResourceRequest("adapters/JavaScriptSOAP/getCitiesByCountry", WLResourceRequest.POST);
  resourceRequest.setQueryParameter("params", "['India']");
  resourceRequest.send().then(
   function(response) {
        alert('response   '+JSON.stringify(response.responseText));
   },
        function(response) {

        alert("HTTP Failure  "+JSON.stringify(response));
     }
    );
    }

Мне нужно передать параметры в http-адаптеры. Он содержит название страны. Я включил название страны в сам файл Index js. При предварительном просмотре приложения я получаю код ошибки 415,

И в консоли я получил как

[AUDIT   ] CWWKS1100A: Authentication did not succeed for user ID test. An invalid user ID or password was specified.
[AUDIT   ] CWWKS1100A: Authentication did not succeed for user ID test. An invalid user ID or password was specified.
[AUDIT   ] CWWKS1100A: Authentication did not succeed for user ID test. An invalid user ID or password was specified.

У меня есть:

Eclipse Java EE IDE для веб-разработчиков. Версия: Mars.2 Release (4.5.2) Идентификатор сборки: 20160218-0600 Windows 7

Какую аутентификацию я должен предоставить. Как преодолеть ошибку??


person Janaki Narayanan    schedule 19.09.2016    source источник
comment
Я не могу понять вопрос. Какой клиентский код вызывает этот адаптер?   -  person Moty Drimer    schedule 19.09.2016
comment
Я не могу вызвать адаптер из клиентского кода (например, index.js). Теперь я также включил код index.js.   -  person Janaki Narayanan    schedule 19.09.2016
comment
Когда именно вы получаете эту ошибку? Вы упоминаете - компиляция . Компиляция какого-то вашего приложения?   -  person Vivin K    schedule 19.09.2016
comment
Я получил этот ответ, когда нажимаю кнопку, которая вызывает функцию submitRequest в index.js.   -  person Janaki Narayanan    schedule 19.09.2016


Ответы (3)


Ошибка 415 — «Неподдерживаемый тип носителя». Это означает, что сервер решил, что отправленный вами запрос не содержит тот тип данных, который, по его мнению, должен быть.

Причина, по которой вы получаете это, заключается в том, что вы отправляете запрос POST без тела и с параметрами запроса. Чтобы решить эту проблему, вы можете изменить запрос POST на запрос GET. Просто измените

 WLResourceRequest("adapters/JavaScriptSOAP/getCitiesByCountry", WLResourceRequest.POST);

to

 WLResourceRequest("adapters/JavaScriptSOAP/getCitiesByCountry", WLResourceRequest.GET);
person Moty Drimer    schedule 22.09.2016

Вы неправильно передаете аргументы. params - это массив, поэтому ваш код должен выглядеть так

function submitRequest() { var resourceRequest = new WLResourceRequest("adapters/JavaScriptSOAP/getCitiesByCountry", WLResourceRequest.POST); resourceRequest.setQueryParameter("params", "['India']"); resourceRequest.send().then( function(response) { alert('response '+JSON.stringify(response.responseText)); }, function(response) { alert("HTTP Failure "+JSON.stringify(response)); } ); }
person Yoel Nunez    schedule 19.09.2016

Попробуйте добавить secure="false" к объявлению процедуры в файле XML:

<procedure name="getCitiesByCountry" secured="false"/>
person Shmulik Bardosh    schedule 20.09.2016
comment
@shmulik. Все еще получаю ту же ошибку. Нужно ли мне добавлять какую-либо аутентификацию в файл config.xml ?? - person Janaki Narayanan; 22.09.2016