标签: httpclient

java中的Httpclient,不使用任何第三方库

我试图在不允许我们使用互联网的工作场所中实现一些自动化(并非所有网站都允许使用)。

要求:我有一个表单,其中有一个文本框和一个提交按钮,我必须在文本框中输入一些内容并提交表单。我需要解析 HTML 并获取特定文本的响应。页面是用JSP编写的

限制:我无法访问第三方库并且必须使用 Java 6。

请引导我走向正确的方向。

java httpclient

1
推荐指数
1
解决办法
1204
查看次数

C# 同时运行多个异步任务

我对异步任务有点陌生。

我有一个函数,可以获取学生 ID 并使用所需的 ID 从特定大学网站上抓取数据。

    private static HttpClient client = new HttpClient();
    public static async Task<Student> ParseAsync(string departmentLink, int id, CancellationToken ct)
    {
        string website = string.Format(departmentLink, id);
        try
        {
            string data;
            var stream = await client.GetAsync(website, ct);
            using (var reader = new StreamReader(await stream.Content.ReadAsStreamAsync(), Encoding.GetEncoding("windows-1256")))
                data = reader.ReadToEnd();

            //Parse data here and return Student.
        } catch (Exception ex)
        {
            Console.WriteLine(ex.Message);
        }
    }
Run Code Online (Sandbox Code Playgroud)

并且它工作正常。有时虽然我需要为很多学生运行这个函数,所以我使用以下命令

        for(int i = ids.first; i <= ids.last; i++)
        {
            tasks[i - ids.first] = ParseStudentData.ParseAsync(entity.Link, i, …
Run Code Online (Sandbox Code Playgroud)

c# parsing asynchronous httpclient task

1
推荐指数
1
解决办法
1879
查看次数

无法将 sort() 与 HttpClient 订阅一起使用,“Object”类型上不存在属性“sort”

我正在从 Http 转移到 HttpClient,但现在我无法使用 map() 对结果进行排序,因此出现了一些错误。

使用 HttpClient,我得到“对象”类型上不存在属性“排序”。

this.getConcept().subscribe(res => {
    res.sort((f, n): number => {
        if (f.code < n.code) return -1;
        if (f.code > n.code) return 1;

        return 0;
    }); 
    console.error(res);
    this.arrConcept = res;
});
Run Code Online (Sandbox Code Playgroud)

使用 Http 我可以毫无问题地对其进行排序

this.getConcept().map(this.extractData).subscribe(res => {
    res.sort((f, n): number => {
        if (f.code < n.code) return -1;
        if (f.code > n.code) return 1;

        return 0;
    }); 
    console.error(res);
    this.arrConcept = res;
});
Run Code Online (Sandbox Code Playgroud)

sorting http httpclient typescript angular

1
推荐指数
1
解决办法
9085
查看次数

keep-alive 是否始终在使用 httpclient 的请求中发送以及如何防止发送它

我有一个 Java/Spring 项目,其中使用 Oauth2RestTemplate 并使其使用 HttpClient (org.apache.http.client.Httpclient) 而不是默认的 SimpleClient

HttpClient httpClient = HttpClients.custom().setSSLSocketFactory(socketFactory).build(); 

HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
oAuth2RestTemplate.setRequestFactory(requestFactory);
Run Code Online (Sandbox Code Playgroud)

对此,我想知道/理解是否始终为所有请求发送保持活动标头?

如果总是发送,有办法禁止发送吗?我看到一篇文章 -在 Apache HttpClient 中禁用 Keep Alive,其中讨论了禁用它,但它建议对 httpMethod 进行设置。我不确定如何在上面描述的代码设置中访问此 httpMethod。

java spring httpclient keep-alive

1
推荐指数
1
解决办法
7066
查看次数

Angular 中如何从 json 中获取数据分页

我是新手,我有一个 HTTPclient 服务,它从一个 JSON 文件中获取所有数据,有 1000 个寄存器,我如何进行分页,例如,显示前 10 个并对其进行分页

这是我的服务

@Injectable({
  providedIn: 'root'
})
export class ProductsService {

  constructor(private http:HttpClient ) { 
  }

  getPorducts(): Observable<Product[]> {

    return this.http.get<Product[]>('assets/data/DATA.json');

  }
}
Run Code Online (Sandbox Code Playgroud)

我只是在我的家庭组件上使用它

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styles: []
})
export class HomeComponent implements OnInit {

  public products: any[] = [];


  constructor(private _Products: ProductsService) { }

  public lastKey: any[] = [];

  ngOnInit() {
    this._Products.getPorducts().subscribe(data => {
      if (data) {
        this.products = data;
      }
    });


  }
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到呢?提前致谢

javascript arrays httpclient angular

1
推荐指数
1
解决办法
3450
查看次数

Angular 8 HttpClient:无法处理文本/csv服务器响应

我有一个端点,它返回一个 csv 数据集,该数据集将使用保存saveasBlob\nAngularJS 前端工作正常,而 Angular 8 则很困难。\n这是我的 Angular 8 实现

\n\n
 const headers = new HttpHeaders({\n            Accept: \'text/csv\',\n        });\n        const options = { headers };\n        this.httpClient\n            .post<ExportCsvSettingsViewDto>(this.appConfigService.buildApiUrl(this.loadPath(batchId)), csvDto, options)\n            .subscribe((fileResult: any) => {\n                const file = new Blob([fileResult], { type: \'text/csv\' });\n                saveAs(file, this.fileName + \'.csv\');\n            });\n
Run Code Online (Sandbox Code Playgroud)\n\n

这会导致以下HttpErrorResponse情况:\n Object {error: SyntaxError: Unexpected token 。在 JSON 中,位于 positio\xe2\x80\xa6,文本:“1.112.373;en-US\n日期时间 UTC;日期本地时间;Bat\xe2\x80\xa6”}

\n\n

我怀疑这是因为HttpClient将响应视为而JSON不是"text/csv"\n那些是请求标头:

\n\n
Connection: keep-alive\nContent-Length: 141\nPragma: no-cache\nCache-Control: no-cache\nAccept: text/csv\nContent-Type: …
Run Code Online (Sandbox Code Playgroud)

httpclient http-headers angular

1
推荐指数
1
解决办法
2493
查看次数

HttpClient 无法解析“UTF-8”内容类型

我在HttpClient中遇到一个已知的错误。每当服务器响应包含"UTF-8"(包括引号)时,都会触发异常:

The character set provided in ContentType is invalid. Cannot read content as string using an invalid character set. ---> System.ArgumentException: '"utf-8"' is not a supported encoding name. 
Run Code Online (Sandbox Code Playgroud)

示例代码:

HttpClient _client = new HttpClient();
HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "https://www.facebook.com");
requestMessage.Headers.Add("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.4044.55 Safari/537.36");

HttpResponseMessage response = _client.SendAsync(requestMessage).GetAwaiter().GetResult();
Run Code Online (Sandbox Code Playgroud)

通常的解决方法是什么?我正在使用.NETFramework 4.6.1。

c# httpclient

1
推荐指数
1
解决办法
1804
查看次数

使用 java.net.http.HttpClient 的 GOAWAY BItBucket API

使用java.net.http.HttpClient以下配置将请求发送到 BitBucket API:

var url = "https://bitbucket.org/api/2.0/repositories/asomov/snakeyaml/issues/377";

HttpClient client = HttpClient.newBuilder()
            .followRedirects(HttpClient.Redirect.ALWAYS)
            .version(HttpClient.Version.HTTP_2)
            .build();

HttpRequest request = HttpRequest.newBuilder()
                    .GET()
                    .uri(URI.create(url))
                    .setHeader("User-Agent", "Java 11 HttpClient Bot")
                    .timeout(Duration.ofSeconds(5))
                    .build();

HttpResponse<String> response = client.send(request,
                    HttpResponse.BodyHandlers.ofString());
Run Code Online (Sandbox Code Playgroud)

总是抛出以下异常:

java.io.IOException: /192.168.1.126:58337: GOAWAY received
    at java.net.http/jdk.internal.net.http.HttpClientImpl.send(HttpClientImpl.java:576)
    at java.net.http/jdk.internal.net.http.HttpClientFacade.send(HttpClientFacade.java:119)
Caused by: java.io.IOException: /192.168.1.126:58337: GOAWAY received
    at java.net.http/jdk.internal.net.http.Http2Connection.handleGoAway(Http2Connection.java:985)
    at java.net.http/jdk.internal.net.http.Http2Connection.handleConnectionFrame(Http2Connection.java:853)
    at java.net.http/jdk.internal.net.http.Http2Connection.processFrame(Http2Connection.java:724)
    at java.net.http/jdk.internal.net.http.frame.FramesDecoder.decode(FramesDecoder.java:155)
    at java.net.http/jdk.internal.net.http.Http2Connection$FramesController.processReceivedData(Http2Connection.java:232)
    at java.net.http/jdk.internal.net.http.Http2Connection.asyncReceive(Http2Connection.java:649)
    at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.processQueue(Http2Connection.java:1275)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SynchronizedRestartableTask.run(SequentialScheduler.java:175)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$CompleteRestartableTask.run(SequentialScheduler.java:147)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler$SchedulableTask.run(SequentialScheduler.java:198)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:271)
    at java.net.http/jdk.internal.net.http.common.SequentialScheduler.runOrSchedule(SequentialScheduler.java:224)
    at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.runOrSchedule(Http2Connection.java:1293)
    at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.onNext(Http2Connection.java:1319)
    at java.net.http/jdk.internal.net.http.Http2Connection$Http2TubeSubscriber.onNext(Http2Connection.java:1253)
    at …
Run Code Online (Sandbox Code Playgroud)

java http bitbucket httpclient java-http-client

1
推荐指数
1
解决办法
976
查看次数

如何处理大型 http JSON 响应正文

有返回大型 JSON 数据示例结果的 REST-API:

{
   "arrayA":[
      {
         "data1":"data",
         "data2":"data"
      },..
   ],
   "arrayB":[
      {
         "data1":"data"
      },..
   ]
}
Run Code Online (Sandbox Code Playgroud)

“arrayA”可能只记录 0 到 100 条记录,但“arrayB”可能有 100 万到 1000 万条记录,这会使我的 java 应用程序内存不足。我的问题是如何处理这个案子。

java spring httpclient

1
推荐指数
1
解决办法
6638
查看次数

Net Core使用HttpClient测试方法

我有一个使用 执行请求的服务方法HttpClient。服务类构造函数IHttpClientFactory使用以下代码注入并创建客户端:

_httpClient = httpClientFactory.CreateClient(url);
Run Code Online (Sandbox Code Playgroud)

在我的测试构造函数中,我试图模拟PostAsync方法响应。

public MyServiceUnitTests()
    {
        _HttpClientMock = new Mock<IHttpClientFactory>();
        var mockHttpMessageHandler = new Mock<HttpMessageHandler>();
        mockHttpMessageHandler.Protected()
            .Setup<Task<HttpResponseMessage>>("PostAsync", ItExpr.IsAny<string>(), ItExpr.IsAny<HttpContent>())
            .ReturnsAsync(new HttpResponseMessage{ StatusCode = HttpStatusCode.OK });
        var httpClient = new HttpClient(mockHttpMessageHandler.Object);
        _HttpClientMock.Setup(x => x.CreateClient(It.IsAny<string>())).Returns(httpClient);

        _Service = new MyService(_HttpClientMock.Object);
    }
Run Code Online (Sandbox Code Playgroud)

设置mockHttpMessageHandler 时出现以下错误:System.ArgumentException: 'No protected method HttpMessageHandler.PostAsync found whose signature is compatible with the provided arguments (string, HttpContent).'

我究竟做错了什么?

c# moq httpclient asp.net-core

1
推荐指数
1
解决办法
1678
查看次数