我正在尝试发送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密钥。
答案 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-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
资源: