использование веб-службы SOAP в Java - PullRequest
1 голос
/ 02 декабря 2010

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

Ответы [ 3 ]

1 голос
/ 02 декабря 2010

SOAP - это в основном отправка XML на веб-сервер с использованием метода POST.Хотя XML может быть многословным, вы должны иметь возможность создавать XML с помощью StringBuilder, а затем использовать простой HTTP-клиент, такой как Apache HttpClient , для создания запроса POST к URL-адресу с использованием строки XML в качестве тела.

Это так же просто, как они приходят.

0 голосов
/ 03 августа 2018

Вот простой и легкий пример потребления мыла API. Шаги ниже.

  1. Необходимо создать класс SOAPTestController.java, KflConstants.java и SoapClient.java.
  2. Затем реализуйте приведенные ниже блоки кода и наслаждайтесь им.

Вот SOAPTestController.java класс

@Controller
public class SOAPTestController {

    @RequestMapping(value = "/showdate", method = RequestMethod.GET)
    public @ResponseBody String getDateAndTime() {

        String DateAndTimeSOAPRequest = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\r\n"
                + "<soap12:Envelope xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" xmlns:soap12=\"http://www.w3.org/2003/05/soap-envelope\">\r\n"
                + "  <soap12:Body>\r\n" + "    <GetDateAndTime xmlns=\"http://tempuri.org/\" />\r\n"
                + "  </soap12:Body>\r\n" + "</soap12:Envelope>";
        String Fundtion = "GetDateAndTime";
        return new SoapClient().ConsumeTheService(DateAndTimeSOAPRequest, "GetDateAndTime");

    }

}

Это KflConstants .java класс

public class KflConstants {

    public static final String SERVER_IP = "http://192.168.0.222/";
    public static final String SERVICE_URL = SERVER_IP + "bussinesswebserviceNew/service.asmx";
    public static final String CONTENT_TYPE_TEXT_XML = "text/xml; charset=utf-8";
    public static final String GET_DATE_AND_TIME_URL = SERVICE_URL + "/GetDateAndTime";

}

Вот класс SOAPClient .java

public class SoapClient {

    private static Logger log = LogManager.getLogger(SoapClient.class);

    /*Input Stream Convert to the String Object*/
    public static String convertStreamToString(java.io.InputStream is) {
        java.util.Scanner s = new java.util.Scanner(is).useDelimiter("\\A");
        return s.hasNext() ? s.next() : "";
    }

    public String ConsumeTheService(String SOAPXML, String APINAME) {
        String Result = null;
        try {
            /*Create The Connection*/
            URL url = new URL(KflConstants.SERVICE_URL);
            URLConnection conn = url.openConnection();
            conn.setDoOutput(true);
            conn.setRequestProperty("Content-Type", KflConstants.CONTENT_TYPE_TEXT_XML);
            conn.setRequestProperty(APINAME, KflConstants.GET_DATE_AND_TIME_URL);
            log.info("Sending the envelope to server");
            /*Send the request XML*/
            OutputStream outputStream = conn.getOutputStream();
            outputStream.write(SOAPXML.getBytes());
            outputStream.close();
            /* Read the response XML*/
            log.info("Reading the Response");
            InputStream inputStream = conn.getInputStream();
            Result = convertStreamToString(inputStream);
            inputStream.close();
            /*INput Stream Convert to the SOAP Message*/
            InputStream is = new ByteArrayInputStream(Result.getBytes());
            SOAPMessage resposeSOAP = MessageFactory.newInstance().createMessage(null, is);
            /*Return Values*/
            log.info("Result SOAP:"+resposeSOAP.toString());
            log.info("Result String:"+Result);
            return Result;

        } catch (Exception e) {
            e.printStackTrace();
            log.error(e);
            return e.toString();
        }
    }

Спасибо

0 голосов
/ 30 октября 2011
SoapRequestBuilder s = new SoapRequestBuilder();
s.Server = "127.0.0.1"; // server ip address or name

s.MethodName = "ConcatWithSpace";
s.XmlNamespace = "http://tempuri.org/";
s.WebServicePath = "/SimpleService/Service1.asmx";
s.SoapAction = s.XmlNamespace+s.MethodName;
s.AddParameter("one", "David");
s.AddParameter("two", "Hobbs");
String response = s.sendRequest();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...