JAVA中的自定义请求方法

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中实现相同。

+0

你是什么意思“自定义请求方法“?你的curl命令是一个普通的POST请求。 –

+0

根据CURL文档,-X是“(HTTP)指定与HTTP服务器通信时使用的自定义请求方法。将使用指定的请求而不是使用的方法(默认为GET)。” My服务器使用-X选项和-d接受数据。 –

+0

您误解了卷曲文档。 -d为http发布请求设置数据,因此curl会自动创建发布请求(如果已设置)。 -X允许您将请求方法(即标头值)设置为不同的值。但是由于您将其设置为POST,它当然仍然是发布请求。 –

根据相关文档提供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头部。 –