2014-01-31 3 views
0

Я просмотрел ряд сообщений/руководств по вызову WS через AJAX, но до сих пор не могу этого сделать. Не то, что окружающая среда имеет значение, но ... Я написал свой Java-класс в Eclipse, я запускаю его на GlassFish, и я могу попасть в конечную точку через soapUI.Call Web Service от AJAX

JAVA Класс:

package com.tester.gf; 

import java.util.ArrayList; 
import java.util.List; 
import javax.jws.WebService; 

@WebService 
public class GlassFishTestApp { 

    public List<String> getBrands() { 
     List<String> brands = new ArrayList<>(); 
     brands.add("Chevrolet"); 
     brands.add("Dodge"); 
     brands.add("Ford"); 
     return brands; 
    } 
} 

Endpoint:

localhost:8080/GlassFishTestApp/GlassFishTestAppService?wsdl 

Когда я загружаю следующую веб-страницу, я вижу только "Ошибка:" отображается в.

<html> 
    <head> 
     <title>SOAP WS Test</title> 
     <script src="http://code.jquery.com/jquery-1.10.1.min.js"></script> 
     <script> 
      $(document).ready(function() { 
       $.ajax(
        type: 'get', 
        url: 'http://localhost:8080/GlassFishTestApp/GlassFishTestAppService', 
        success: function (data) { 
         $('#results').text(data); 
        }, 
        error: function (request, status, error) { 
         $('#results').text('Error: ' + request.responseText); 
        } 
       }); 
      }); 
     </script> 
    </head> 
    <body> 
     <div id="results"></div> 
    </body> 
<html> 

SoapUI Запрос:

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gf="http://gf.tester.com/"> 
    <soapenv:Header/> 
     <soapenv:Body> 
      <gf:getBrands/> 
     </soapenv:Body> 
</soapenv:Envelope> 

SoapUI откоса:

<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> 
    <S:Body> 
     <ns2:getBrandsResponse xmlns:ns2="http://gf.tester.com/"> 
      <return>Chevrolet</return> 
      <return>Dodge</return> 
      <return>Ford</return> 
     </ns2:getBrandsResponse> 
    </S:Body> 
</S:Envelope> 

Спасибо за любой вклад в это!

+1

Вывести аргумент 'error' в обратном вызове' error' и посмотреть, что он говорит. – adeneo

+1

Также вы используете приложение из 'localhost: 8000'? Если это так, '/ GlassFishTestApp/GlassFishTestAppService' более ясно, что вы делаете запрос на происхождение текущей страницы, а не на запрос перекрестного происхождения. –

+0

Спасибо за ответ. Я просто попробовал следующее и все еще вижу только «Ошибка:» в выводе. $ ('# results'). Текст ('Ошибка:' + ошибка); – RobertFrenette

ответ

0

Получил это!

var soapMessage = 
    '<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:gf="http://gf.tester.com/">' + 
     '<soapenv:Header/>' + 
      '<soapenv:Body>' + 
       '<gf:getBrands/>' + 
      '</soapenv:Body>' + 
    '</soapenv:Envelope>'; 

$.ajax({ 
    url: "/GlassFishTestApp/GlassFishTestAppService", 
    type: "POST", 
    dataType: "xml", 
    contentType: "text/xml; charset=\"utf-8\"", 
    headers: { 
     SOAPAction: "/GlassFishTestApp/GlassFishTestAppService/getBrands" 
    }, 
    data: soapMessage, 
    success: function(data) { 
     $('#results').text(data); 
    }, 
    error: function (request, status, error) { 
     $('#results').text('Error: ' + error); 
    } 
});