JAVA中的自定义请求方法
问题描述:
我一直试图在HTTP头中实现自定义请求方法,同时将我的数据发布到服务器URL。 我的应用程序特定的URL接受数据的-X参数和-d。 基本上我正在尝试使用CURL命令将JSON数据转储到我的influx数据库中,该命令工作正常。但问题是,如果我用适当的方法在java中实现相同的功能,则不支持或不能工作。JAVA中的自定义请求方法
我curl命令是:
curl -X POST -d 'my_json_data' 'my_url'
我如何使用HttpURLConnection类或i.e-阿帕奇客户服务等有效途径在Java中实现相同。
答
根据相关文档提供here,你可以使用下面的大纲来解决你的目的:
// Use URI builder to build the URL and connect to URL using HttpURLConnection
Uri uri = Uri.parse(BASE_URL).buildUpon().appendQueryParameter("d","my_json_data");
// Create the request to your API and open the connection
URL url = new URL(uri.toString());
urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("POST");
urlConnection.connect();
// Read input in string
InputStream inputStream = urlConnection.getInputStream();
StringBuffer buffer = new StringBuffer();
if (inputStream == null) {
return null;
}
reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
buffer.append(line + "\n");
}
if (buffer.length() == 0) {
return null;
}
String response = buffer.toString();
我也会建议你去通过这个讨论:How to add parameters to HttpURLConnection using POST
+0
我的连接格式是这样的 - curl -X POST -d'my_json_data''my_url'。 无论如何,我需要保持这种确切的格式,因为我的服务器只会听到这种确切的格式。需要发送-X和-d头部。 –
你是什么意思“自定义请求方法“?你的curl命令是一个普通的POST请求。 –
根据CURL文档,-X是“(HTTP)指定与HTTP服务器通信时使用的自定义请求方法。将使用指定的请求而不是使用的方法(默认为GET)。” My服务器使用-X选项和-d接受数据。 –
您误解了卷曲文档。 -d为http发布请求设置数据,因此curl会自动创建发布请求(如果已设置)。 -X允许您将请求方法(即标头值)设置为不同的值。但是由于您将其设置为POST,它当然仍然是发布请求。 –