【问题标题】:java.io.FileNotFoundException for the url which was working fine yesterday昨天工作正常的 url 的 java.io.FileNotFoundException
【发布时间】:2016-12-20 06:58:46
【问题描述】:

我昨天能够从 get 请求中获取数据,但是今天如果我调用相同的 api 我得到了

java.io.FileNotFoundException: https://api.quikr.com/jobs/v1/zwayam/application?companyName=test&jobId=123
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection$10.run(Unknown Source)
at java.security.AccessController.doPrivileged(Native Method)
at sun.net.www.protocol.http.HttpURLConnection.getChainedException(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream0(Unknown Source)
at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
at sun.net.www.protocol.https.HttpsURLConnectionImpl.getInputStream(Unknown Source)
at com.zwayam.controller.QuikrDataPoint.getJobApplicationForQuikrJobs(QuikrDataPoint.java:162)
at com.zwayam.controller.QuikrDataPoint.main(QuikrDataPoint.java:54)

引起:java.io.FileNotFoundException:https://api.quikr.com/jobs/v1/zwayam/application?companyName=test&jobId=123 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream0(未知来源) 在 sun.net.www.protocol.http.HttpURLConnection.getInputStream(未知来源) 在 java.net.HttpURLConnection.getResponseCode(未知来源) 在 sun.net.www.protocol.https.HttpsURLConnectionImpl.getResponseCode(未知来源) 在 com.zwayam.controller.QuikrDataPoint.getJobApplicationForQuikrJobs(QuikrDataPoint.java:159) ... 1 更多

我无法直接在浏览器中访问此 api,因为需要设置一些应用程序标头 这是编码问题还是api问题?

    String urlstr = "https://api.quikr.com/jobs/v1/zwayam/application?";

        List<NameValuePair> params = new LinkedList<NameValuePair>();

        params.add(new BasicNameValuePair("companyName", "test"));
        params.add(new BasicNameValuePair("jobId", "123"));
        String paramString = URLEncodedUtils.format(params, "utf-8");

        url = new URL(urlstr + paramString);

        connection = (HttpURLConnection) url.openConnection();
        connection.setRequestMethod("GET");
        connection.setDoOutput(true);
        connection.setRequestProperty("Accept", "application/json");
        System.setProperty("http.agent", "");
        Calendar cal = Calendar.getInstance();
        SimpleDateFormat format = new SimpleDateFormat("YYYY-MM-dd");
        String todaysDate = format.format(cal.getTime());
        String emailId = "roshan@zwayam.com";
        String data = appId + emailId + todaysDate;
        SecretKeySpec signingKey = new SecretKeySpec(tokenKey.getBytes(), "HmacSHA1");
        Mac mac = Mac.getInstance("HmacSHA1");
        mac.init(signingKey);
        String signature = toHexString(mac.doFinal(data.getBytes()));
        connection.setRequestProperty("Content-Type", "application/JSON");
        connection.setRequestProperty("X-Quikr-App-Id", "890");
        connection.setRequestProperty("X-Quikr-Token-Id", tokenId.toString());
        connection.setRequestProperty("X-Quikr-Signature-v2", signature);
        connection.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");
        int responseCode = connection.getResponseCode();

这是调用api的部分,我得到的响应码是404

【问题讨论】:

  • 我认为我们需要查看 QuikrDataPoint.java:162,但通常 FileNotFound 只意味着一件事
  • 我得到的响应码是 404 你的故事变了。你肯定知道404 是什么意思

标签: java api httpurlconnection


【解决方案1】:

问题出在 api 上,他们修复了它,现在可以正常工作了 :)

【讨论】:

    猜你喜欢
    • 2023-03-07
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 1970-01-01
    • 2017-08-22
    • 1970-01-01
    • 2018-09-19
    相关资源
    最近更新 更多