【问题标题】:How to use http POST data section - Java如何使用 http POST 数据部分 - Java
【发布时间】:2015-07-15 05:53:22
【问题描述】:

我的应用程序中有许多有效的 https POST 连接,它们都在表单部分发送简单的名称/值对。

我一直在使用 https://httpbin.org/post 测试新的通信,它会退回我的请求,以便我查看它的外观。

返回的请求如下所示:

{  
    "args": {},   
    "data": "",   
    "files": {},   
    "form": {    
        "data": "Test file #1\nThis file is for testing the file uploading",     
        "name": "testFile1.txt"  
        ...
    },   
    "headers": {    
        "Accept": "text/html, image/gif, image/jpeg, *; q=.2, */*; q=.2",     
        "Content-Length": "193",     
        "Content-Type": "application/x-www-form-urlencoded",     
        "Host": "httpbin.org",     
        "User-Agent": "Java/1.8.0_45"  
    },   
    "json": null,   
    ...  
    "url": "https://httpbin.org/post"
}

我可以使用httpsConn.getOutputStream().write(data) 将数据放入“表单”部分(如上),其中 httpsConn 是我的 HttpsURLConnection,数据是我的名称/值对的字节[]。

我可以将数据放入“文件”部分使用(在其他位中,我认为这些是重要的代码片段)

request.writeBytes("Content-Disposition: form-data; name=\"data\"; filename=\"testFile1.txt\"\r\n");
int data; while ((data = fileInputStream.read()) != -1) { request.write(data); }

请求是我的DataOutputStream

上述选项可用于在“表单”或“文件”部分发送文件,但我不太明白它是如何定义应在哪个部分发送信息的。

如何将信息添加到“数据”或“参数”部分?

【问题讨论】:

    标签: java http post https


    【解决方案1】:

    在您只想将数据作为键值对发送的简单场景中,请使用表单数据。它易于实现且易于使用..

    但是,如果您要发送 CSV 文件或任何此类大型数据等复杂数据,请将它们作为具有适当内容处置的文件作为多部分数据或相关数据发送。

    args 通常用在 get 请求的情况下,后端需要根据用户输入发回一些数据。我们通常不使用 args 将数据发布到后端,因为它在语义上是不正确的..

    【讨论】:

    • 是的,这就是我想要的,发送大型/复杂数据。我以为它放在“数据”部分,但你是说它们应该放在“文件”部分吗?因为我真的不明白我是如何让数据从“表单”部分切换到“文件”部分的,所以我不知道如何选择将某些内容附加到“数据”或“参数”部分.是 Content-Disposition 定义了这一点吗?如果是这样,我会设置什么来使用数据部分?
    • U 应该按名称内容配置设置标题并将其设置为多部分数据..
    猜你喜欢
    • 1970-01-01
    • 2014-08-29
    • 2018-12-26
    • 2017-07-02
    • 2022-11-22
    • 2012-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多