Java:将原始数据添加到负载 Http Post 请求

标签 java http-post payload

我打算发送一个简单的 http post 请求,在有效负载中包含一个大字符串。

到目前为止,我有以下内容。

    DefaultHttpClient httpclient = new DefaultHttpClient();


    HttpPost httppost = new HttpPost("address location");

    String cred = "un:pw";

    byte[] authEncBytes = Base64.encodeBase64(cred.getBytes());
    String authStringEnc = new String(authEncBytes);



    httppost.setHeader("Authorization","Basic " + authStringEnc);

但是,我不知道如何将简单的 RAW 字符串附加到负载中。我能找到的唯一示例是实体中的名称值对,但这不是我想要的。

有什么帮助吗?

最佳答案

这取决于您使用的具体 HTTP-API:

Commons HttpClient(旧 - 生命终结)

从 HttpClient 3.0 开始,您可以为您的 PostMethod 指定一个 RequestEntity:

httpPost.setRequestEntity(new StringRequestEntity(stringData));

RequestEntity 对二进制数据的实现是 ByteArrayRequestEntity for byte[]FileRequestEntity 从中读取数据一个文件(自 3.1 起)和 InputStreamRequestEntity,它可以从任何输入流中读取。

在 3.0 之前,您可以直接设置一个 String 或一个 InputStream,例如一个 ByteArrayInputStream,作为请求体:

httpPost.setRequestBody(stringData);

httpPost.setRequestBody(new ByteArrayInputStream(byteArray));

此方法现已弃用。

HTTP 组件(新)

如果您使用较新的 HTTP components API、方法、类和接口(interface)名称稍有变化,但概念是一样的:

httpPost.setEntity(new StringEntity(stringData));

其他 Entity 实现:ByteArrayEntityInputStreamEntityFileEntity、...

关于Java:将原始数据添加到负载 Http Post 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20094042/

相关文章:

spring - RESTful Web 服务、Spring-WS 有效负载或 Spring 3 MVC REST Controller 采用哪种方式?

Firefox 推送通知 - 通过curl 发送数据

android - 如何计算android gcm有效负载长度

java - 当两个单独的模式具有相同的命名空间时,如何告诉 JAXB 在单独的包中生成类?

php - 将输入文件放入 FormData jquery 以提交给 PHP

java - mysql 函数像 java 一样进行加密/解密

c# - 在JsonResult中返回文件还是在ActionResult中返回Json数据?

python - 如何使用 POST 数据和 Cookie 发出 Python HTTP 请求?

python - 如何将对象(打印图像CMYK)图片转换为真实的RGB值?

java - 哪个先加载?静态 block 还是 spring bean?