使用 Apache HttpClient 的 Java HTTPPost 请求

2024-03-15

我需要一个java程序来生成以下请求。 我正在使用 Apache HttpClient 库,但仍然无法生成如下请求:

这是我的 python 程序生成的,我编写了一个等效的 java 程序。但它抛出了403。

2012-09-10 15:12:05G 信息:G2OAuth 身份验证数据 =“3、0.0.0.0、0.0.0.0、1347289925、3223833979、crlakamai” 2012-09-10 15:12:05G 信息:G2OAuth 符号字符串 = "3, 0.0.0.0, 0.0.0.0, 1347289925, 3223833979, akamai/182228\nx-akamai-acs-action:version=1&action=dir&format=xml \n"

   send: 'POST /182228 HTTP/1.1\r\nHost: crl.api.akamailab.com\r\nAccept-Encoding: identity\r\nX-Akamai-ACS-Auth-Data: 3, 0.0.0.0, 0.0.0.0, 1347289925, 3223833979, crlsymc\r\nX-Akamai-ACS-Auth-Sign: eFnWtJBIyj4rxV3V0axF3w==\r\nX-Akamai-ACS-Action: version=1&action=dir&format=xml\r\n\r\n'

reply: 'HTTP/1.1 200 OK\r\n'
header: Server: Apache
header: Content-Type: text/html
header: Date: Mon, 10 Sep 2012 15:12:09 GMT
header: Content-Length: 31
header: Connection: keep-alive

响应如下所示:

<?xml version="1.0" encoding="ISO-8859-1"?>
<stat directory="/182232">
        <file type="file" name="log4j.properties" mtime="1346780907" size="301" md5="c92268157f1732a05c2027d151fc539a"/>
</stat>

这是我的Java代码:

    final HttpHost targetHost = new HttpHost("a.host.com", 80, "http");
    final DefaultHttpClient httpClient = new DefaultHttpClient();
    final Credentials credentials = new UsernamePasswordCredentials("user","pass");
    httpClient.getCredentialsProvider().setCredentials(new AuthScope(targetHost.getHostName(), targetHost.getPort()), credentials);


    final HttpPost httpPostRequest = new HttpPost("akamai/182232");

    //Add your Data
    final List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(6);
    nameValuePairs.add(new BasicNameValuePair("Host: ", "a.host.com");
    nameValuePairs.add(new BasicNameValuePair("Accept-Encoding: ", "identity"));
    nameValuePairs.add(new BasicNameValuePair("Content-Length: ", "6"));

    httpPostRequest.setEntity(new UrlEncodedFormEntity(nameValuePairs));

    final HttpResponse response = httpClient.execute(targetHost, httpPostRequest);

    if (response.getStatusLine().getStatusCode() != 200) {
        throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
    }

我的回复看起来像这样。

2012-09-10 11:31:22,600 DEBUG [wire] >> "POST /182228/a.crl HTTP/1.1[\r][\n]"
2012-09-10 11:31:22,601 DEBUG [wire] >> "Content-Length: 394[\r][\n]"
2012-09-10 11:31:22,601 DEBUG [wire] >> "Content-Type: application/x-www-form-urlencoded; charset=ISO-8859-1[\r][\n]"
2012-09-10 11:31:22,601 DEBUG [wire] >> "Host: crl.api.symclab.com:80[\r][\n]"
2012-09-10 11:31:22,601 DEBUG [wire] >> "Connection: Keep-Alive[\r][\n]"
2012-09-10 11:31:22,601 DEBUG [wire] >> "User-Agent: Apache-HttpClient/4.1.3 (java 1.5)[\r][\n]"
2012-09-10 11:31:22,602 DEBUG [wire] >> "[\r][\n]"

我想要接受编码另一个标题作为帖子的一部分,如何添加它们?我相信它必须是 post 请求的一部分,而不是 http 标头。


除了您错误地作为 POST 参数发送的参数之外,Accept-Encoding 也是 HTTP 标头的一部分:

以下是使用 HTTP 客户端发送它的方法:

httpPostRequest.setHeader("Content-Length", "6"); 
httpPostRequest.setHeader("Accept-Encoding", "identity"); 
httpPostRequest.setHeader("Host", "a.host.com");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Apache HttpClient 的 Java HTTPPost 请求 的相关文章

随机推荐

  • “#!/bin/env”是什么意思(位于 node.js 脚本的顶部)?

    我发现一些 Node js 项目的顶部有这个app js 如在这个开放轮班计划 https github com openshift openshift mongo node express example blob master serv
  • WinDBG - 查找实际的(非托管)异常

    我试图在托管 非托管混合代码中找到实际的异常 问题是我有一个 Net 类 它捕获所有未处理的异常 然后创建一个转储 因此当我查看转储时 存在混合的托管 非托管代码 并且我无法真正获取实际的非托管异常 更糟糕的是 Net 似乎有自己的例外 所
  • 如何在 ACSL 中编写“is power of 2”谓词?

    我尝试编写一个 ACSL 谓词来查看整数是否是 2 的幂 如下所示 predicate positive power of 2 integer i i gt 0 i 1 i 1 0 positive power of 2 i gt gt 1
  • OpenFileIDialog C# 中的 URL 作为文件名

    在我的 C win 表单中 我使用OpenFileDialog供用户选择要保存的文件 当用户指定一个 url 文件时 例如http www xyz com qdms MyFile PDFOpenFileDialog 下载文件并给出下载的文件
  • OPENCV 链接错误 - Win32 和 VS2012

    我已经构建了 openCV 3 0 0 alpha 和 beta 版本 但每次我运行我的项目时 我都会收到此错误 仅适用于 imread 功能 error LNK2019 unresolved external symbol class c
  • 如何设置Redis最大内存?

    我发现配置在this http redis io topics config 它只是说使用指定配置的命令 redis server
  • 如何从受密码保护的站点更新 Eclipse 插件?

    我在 这个网站 http javaforge com project HGE http javaforge com project HGE 我需要 注册 才能下载 Mercurial 的 Eclipse 插件 我注册了 但似乎什么也没发生
  • Wix:如何警告用户而不是使用属性终止安装?

    我正在 x64 计算机上搜索 Microsoft Access 数据库引擎的注册表项 这是我的代码
  • 将请求的文件从 API 传输到 API:NestJS(HttpService: Axios) 到 Python(flask)

    我正在尝试将文件从 NestJS API 传输到 Python Flask API 此过程将由 Nest API 上的 POST 请求 FormData 文件 触发 然后 Nest api 应该将文件发送到 Python api NestJ
  • MongoEngine - 通过 id 从 ListField 中提取引用

    我想删除一些引用ListField ReferenceField 仅基于其价值 我将有关图像的信息存储在以下模型中 class ImageUrl Document src UrlField counter IntField deleted
  • torchvision和tensorflow-gpu导入错误

    运行这个 import torchvision import tensorflow 产生错误 SystemError google protobuf pyext descriptor cc 354 内部函数的参数错误 但是 交换导入的顺序不
  • Tomcat不返回图片资源

    我正在使用 eclipse 并使用 eclipse 中的 tomcat6 运行我的 jsp servlet 我的 servlet 为我创建了一个图像 并将其存储在我的 webapps 的目录中 但是 当我尝试从 JSP 访问此图像时 它返回
  • React中输入的屏蔽卡号

    我正在学习 React 并希望输入有两个约束 16个数字 每四个后面加一个空格 import React Component from react export default class CardNumberInput extends C
  • C 预处理器插入的空格

    假设我们得到以下输入 C 代码 define Y 20 define A x 10 x Y A A 40 gcc E像这样的输出 10 10 40 20 20 gcc E traditional cpp像这样的输出 10 10 40 20
  • Linux 内核是如何测试的?

    Linux 内核开发人员如何在本地测试他们的代码以及在提交代码后 他们是否使用某种单元测试和构建自动化 测试计划 Linux 内核非常重视社区测试 通常 任何开发人员都会在提交之前测试自己的代码 并且通常他们会使用 Linus 的内核开发版
  • Javascript数组排序和唯一性

    我有一个像这样的 JavaScript 数组 var myData 237 124 255 124 366 255 我需要数组元素是唯一的并且已排序 myData 0 124 myData 1 237 myData 2 255 myData
  • 发出 Facebook 好友请求时可以获取吗?

    friend request 流包含 2 个字段 uid from 和 uid to 没有关于提出请求的日期信息 还有其他表包含该信息吗 Thanks 在 Facebook 论坛上得到回复 这是不可能的
  • 一段时间后服务停止工作。需要连续工作

    我正在开发一个计步器应用程序 在其中计算行走的步数并在午夜将其更新到服务器 我有一个持续运行的服务来完成这一切 这是我的服务 public class StepCounterService extends Service implement
  • jquery .hover 不适用于 AJAX 呈现的元素

    我有一些通过 AJAX 调用创建的元素 在这些元素中 有一个子元素 当悬停时需要显示另一个动态创建的子元素 当我运行 hoverjquery 在小提琴中 工作正常 当我在代码中实现它时 它不想工作 我想知道这是否取决于什么时候 hover加
  • 使用 Apache HttpClient 的 Java HTTPPost 请求

    我需要一个java程序来生成以下请求 我正在使用 Apache HttpClient 库 但仍然无法生成如下请求 这是我的 python 程序生成的 我编写了一个等效的 java 程序 但它抛出了403 2012 09 10 15 12 0