尝试使用Android签入Foursquare时出现FileNotfoundException

时间:2013-01-09 15:24:12

标签: android foursquare

自从过去几天我没有运气,我试着寻找答案,甚至一些stackoverflow的答案都没有用。

我正在尝试通过Android接收用户提示后签入用户。我在FileNotfoundException获得了getInputStream(),非经过身份验证的API就像 "https://api.foursquare.com/v2/venues/categories"效果很好。我错过了什么吗?

    URL url = new URL("https://api.foursquare.com/v2/checkins/add?oauth_token="+token);
    HttpURLConnection conn = (HttpURLConnection) url.openConnection();
    conn.addRequestProperty("venueId","12238");
    conn.setDoInput(true);
    conn.setRequestMethod("POST");
    conn.setAllowUserInteraction(true);
    conn.connect();
    InputStream is = conn.getInputStream();
    String response = streamToString(is);
    return response;

经过大量努力后解决这个问题。请参阅下面的答案。

4 个答案:

答案 0 :(得分:1)

尝试使用与添加sceneid相同的方法添加oauth_token。此外,您的会员资格无效,因此请确保您正在检查用户是否真实到场。

答案 1 :(得分:1)

HttpURLConnection类具有误导性,因为它会为任何400或以上的HTTP错误代码抛出FileNotFoundException

所以它不一定是错误的URL(404),它可能是400(错误的请求),403(禁止),500(内部服务器错误)等。

使用getResponseCode方法更准确地指出问题。

答案 2 :(得分:0)

首先:Yoy有https网址,并尝试创建HttpURLConnection。你应该使用HttpsURLConnection。

第二:您可以尝试添加conn.setDoOutput(true),“发布”请求需要它。如果没有它,服务器可以尝试给你一个get请求,尽管conn.setRequestMethod(“POST”)。您还可以检查浏览器插件中的标题,并将其放入您的请求中。

答案 3 :(得分:0)

Okie我终于设法解决了这个问题,我不知道上面的代码究竟是什么问题,但以下工作有效。

此API需要POST调用,但即使是venueID也必须是URL的一部分,addRequestProperty似乎没有正确发送sceneID。因此我将代码更改为

URL url = new URL("https://api.foursquare.com/v2/checkins/add?venueId=12238&oauth_token="+token);

这解决了这个问题。谢谢大家