【问题标题】:Not able to send API requests from eclipse/Intellij无法从 eclipse/Intellij 发送 API 请求
【发布时间】:2018-03-13 15:50:40
【问题描述】:

我正在尝试使用 eclipse 或 intellij 向 api 发送 get 请求,作为使用 java/junit 和放心框架工作的测试的一部分。

每个请求都失败,并显示以下消息

2018 年 3 月 13 日下午 1:29:56 org.apache.http.impl.client.DefaultHttpClient tryConnect 信息:连接到 {s}->http://swapi.co:443 时捕获 I/O 异常 (java.net.SocketException):连接重置

顺便说一句,我在使用代理的工作机器/网络上尝试这样做

我可以使用邮递员手动发送相同的请求,这工作正常,所以我认为服务器端没有问题。

有谁知道我的 ide 中是否需要更改某些设置才能使其正常工作?

作为参考,这是我试图运行的代码:

@Test

public void canGetLuke(){
    given().relaxedHTTPSValidation().
    when().get("http://swapi.co/api/people/1/?format=json").
            then().
            assertThat().
            body("name",
                    equalTo("Luke Skywalker"));

    }

另外,这些是eclipse中的网络连接设置

【问题讨论】:

  • 尝试使用 HTTPS 连接
  • 我忘了说 HTTP 和 HTTPS 都不起作用,导致我原来的帖子中详述了相同的消息
  • 网络使用的 IDE 设置不会影响您的应用程序。

标签: java eclipse api proxy


【解决方案1】:

Run configurationsDebug configurations 下的Arguments 选项卡中,您可以添加VM 将使用的代理设置。尝试使用您的代理主机和端口设置以下参数:

-Dhttp.proxyHost="your.proxy.com"

-Dhttp.proxyPort="8080"

【讨论】:

  • 嗨不幸的是,这不起作用。我找到的解决方案是在给定的语句或 @Before 方法中添加我的代理设置
【解决方案2】:

我最终完成了以下操作之一:

为方法添加代理:

@Test

public void canGetLuke(){
given().proxy("my.proxy.com", 8080).
when().get("https://swapi.co/api/people/1/?format=json").
        then().
        assertThat().
        body("name",
                equalTo("Luke Skywalker"));

}

或在@Before 方法中使用代理设置,如下所示:

@Before
        public void setProxy() {

    proxy("my.proxy.com", 8080);

}

以上两种方法都对我有用 还必须以 https 发送请求

【讨论】:

    【解决方案3】:

    要扩展@JPinzon01 的答案,您可能需要设置 HTTP 和 HTTPS 设置

    HTTP

    -Dhttp.proxyHost="your.proxy.com"
    -Dhttp.proxyPort="8080"
    

    HTTPS

    -Dhttps.proxyHost="your.proxy.com"
    -Dhttps.proxyPort="8080"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-02
      • 1970-01-01
      • 2023-02-01
      • 1970-01-01
      相关资源
      最近更新 更多