【问题标题】:Sending API key using java.net.URL使用 java.net.URL 发送 API 密钥
【发布时间】:2021-06-16 23:45:02
【问题描述】:

我正在尝试发送一个 API 密钥来访问一些数据。这个数据需要作为输入流返回,所以我可以解析它。我正在使用 java.net.URL 访问该站点,但我找不到通过我的 http 请求发送 API 密钥的方法。

URL url = new URL("My specified URL for the API");

        FeedMessage feed = FeedMessage.parseFrom(url.openStream());
        for (FeedEntity entity : feed.getEntityList()) {
            if (entity.hasTripUpdate()) {
                System.out.println(entity.getTripUpdate());
            }
        }

【问题讨论】:

  • 如果我理解正确,您需要在访问此 URL 时在标头中发送 API 密钥。这不是使用标准库可以轻松完成的事情(不确定是否可以完成)。我建议使用 http 客户端库,例如好的http。这是初学者的使用教程:baeldung.com/guide-to-okhttp
  • 我强烈建议使用打包的库,例如 Spring RestTemplate 或 Micronaut 客户端,而不是手写所有代码。这些将使执行诸如包含 Authorization 标头之类的事情变得更加容易。
  • 这是用标准库很容易做到的,即HttpURLConnection.setHeader()。无需使用任何第三方库。 @SeanPatrickFloyd

标签: java api parsing inputstream


【解决方案1】:

我最终使用这些库来解决这个问题:

import java.io.InputStream;
import com.google.transit.realtime.GtfsRealtime.FeedEntity;
import com.google.transit.realtime.GtfsRealtime.FeedMessage;

import java.net.URI;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.utils.URIBuilder;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

这让我可以从 API 中获取我想要的数据,然后将其转换为输入流。允许我这样做的代码如下。

HttpClient httpclient = HttpClients.createDefault();
        try
        {
            URIBuilder builder = new URIBuilder("URL");

            URI uri = builder.build();
            HttpGet request = new HttpGet(uri);
            request.setHeader("Cache-Control", "no-cache");
            request.setHeader("Ocp-Apim-Subscription-Key", "API-Key");


            HttpResponse response = httpclient.execute(request);
            HttpEntity entity = response.getEntity();
            InputStream content = entity.getContent();

            FeedMessage feed = FeedMessage.parseFrom(content);
         }

【讨论】:

    猜你喜欢
    • 2018-03-15
    • 2021-10-07
    • 2014-10-20
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2019-02-13
    相关资源
    最近更新 更多