Как отправить вызов SOAP API в java и вернуть его в json - PullRequest
0 голосов
/ 11 ноября 2018

Я пытаюсь отправить вызов API, а затем прочитать возвращенный json и напечатать значение в возвращаемой информации json. Завиток выглядит так:

curl "https://(address goes here)?where=eq(open,true)&fields=name,totals" \ 
-H 'Api-Key: (api key here)'

Это то, что я имею до сих пор:

import java.io.*;
import java.net.*;
import org.json.JSONObject;
import java.util.LinkedHashMap;
import java.util.Map;

public class Caller {

public void APICall(String str) throws Exception
{
    String url = "(address)" + str + 
    "(address continued)";

    URL obj = new URL(url);
    HttpURLConnection conn = (HttpURLConnection) obj.openConnection();

    conn.setRequestProperty("Api-Key",  
    "(API Key)";
    conn.setDoOutput(true);
    conn.setDoInput(true);

    conn.setRequestMethod("PUT");
    JSONObject data = new JSONObject();

    OutputStreamWriter out = new 
    OutputStreamWriter(conn.getOutputStream());
    out.write(data);

    BufferedReader in = new BufferedReader(
          new InputStreamReader(conn.getInputStream()));

    String inputLine;

     StringBuffer response = new StringBuffer();
     while ((inputLine = in.readLine()) != null) {
        response.append(inputLine);
     }
    in.close();
    out.close();



}

}

А потом я звоню из другого класса, как это:

           try {
           call.APICall(codeArray.get(x));
            } catch (Exception e) {
             e.printStackTrace();
           }

str - это введенный код API для этого адреса, а codeArray.get (x) - это сохраненные коды API. Я не уверен, как добавить параметры в коде curl или вернуть его в формате json. Я скрыл адрес и ключ API.

1 Ответ

0 голосов
/ 11 ноября 2018

Я думаю, вам нужно объяснить больше о полезной нагрузке SOAP, которую вы отправляете, и о полученном ответе, а также о том, какой JSON вы ожидаете вернуть, но я собираюсь угадать, что вы пытаетесь спросить, и постараюсь ответить на него.

Я вижу в коде, что вы отправляете JSON для вызова API, поэтому я предполагаю, что клиент будет использовать вашу конечную точку с SOAP. API, который вы вызываете, должен возвращать JSON, верно? Ваша конечная точка возвратит ответ SOAP XML (или это должен быть необработанный JSON?), Поэтому вы должны выполнить преобразование из JSON в XML (SOAP).

Если вы хотите вернуть JSON клиенту и отправить полезную нагрузку XML SOAP, прочитайте следующий абзац.

Возможно, вы захотите вместо этого вернуть XML, вернуть JSON, чтобы сделать это, если вы используете платформу на стороне сервера или на стороне клиента, вы должны прочитать документацию. Если возможно изменить заголовки (на стороне сервера) через платформу, вы должны принять формат XML (Accept: application/soap+xml; charset=utf-8) и отправить своему клиенту Content-type: application/json. В вашем клиенте, когда вы отправляете запрос, вы должны иметь заголовки Content-type: application/soap+xml; charset=utf-8 и Accept: application/json.

TL; DR; (Для клиента, отправляющего XML и получающего JSON)

Сервер:

Accept: application/soap+xml; charset=utf-8
Content-type: application/json

Клиент:

Accept: application/json
Content-type: application/soap+xml; charset=utf-8

Ресурсы:

Определения полей заголовка

Заголовки SOAP HTTP

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...