如何在Java中发送SOAP API调用并在JSON中返回

时间:2018-11-11 03:33:34

标签: java json api post soap

我正在尝试发送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 :(得分:0)

我认为您需要解释有关发送的SOAP有效负载和收到的答案的更多信息,以及期望返回的JSON的方式,但是我将猜测您要问的问题并尝试对其进行回答。

我可以在代码中看到您将JSON发送到API调用,因此我假设客户端将使用SOAP消耗您的终结点。您调用的API应该返回JSON吗?您的端点将返回SOAP XML答案(或者应该是原始JSON吗?),因此您必须进行从JSON到XML(SOAP)的转换。

如果要向客户端返回JSON并发送SOAP XML有效负载,请阅读以下段落。

如果要在服务器端或客户端使用框架,则可能需要返回XML,返回JSON,如果要这样做,则必须阅读文档。如果可以通过框架更改标头(服务器端),则应接受XML格式(Accept: application/soap+xml; charset=utf-8)并将其发送到客户端Content-type: application/json。在您的客户端中,发送请求时,必须具有Content-type: application/soap+xml; charset=utf-8Accept: 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

资源:

Header Field Definitions

SOAP Headers HTTP