Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/217.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 仅限Twitter应用程序身份验证-错误代码86“;此方法需要GET或HEAD”;_Java_Android_Twitter_Oauth 2.0_Twitter Oauth - Fatal编程技术网

Java 仅限Twitter应用程序身份验证-错误代码86“;此方法需要GET或HEAD”;

Java 仅限Twitter应用程序身份验证-错误代码86“;此方法需要GET或HEAD”;,java,android,twitter,oauth-2.0,twitter-oauth,Java,Android,Twitter,Oauth 2.0,Twitter Oauth,我正在尝试获取https://api.twitter.com/1.1/search/tweets.json?q=nasa&count=5使用仅应用程序的承载令牌,我成功地使用消费者密钥和消费者机密获得了该令牌。但我无法获取推文。这是我的代码: public class SearchTweetsTask extends AsyncTask<String, Void, String> { private static final String TWITTER_HOST = "a

我正在尝试获取
https://api.twitter.com/1.1/search/tweets.json?q=nasa&count=5
使用仅应用程序的承载令牌,我成功地使用消费者密钥和消费者机密获得了该令牌。但我无法获取推文。这是我的代码:

public class SearchTweetsTask extends AsyncTask<String, Void, String> {

    private static final String TWITTER_HOST = "api.twitter.com";
    private static final String TWITTER_USER_AGENT = "TwitterMotion User Agent";

    private Logger logger = Logger.getLogger();

    @Override
    protected String doInBackground(String... tokens) {
        String endPointUrl = tokens[0];
        HttpsURLConnection urlConnection = null;

        try {
            urlConnection = getHTTPSConnection("GET", endPointUrl);
            urlConnection.setRequestProperty("Authorization",
                    "Bearer " + APPLICATION_ONLY_BEARER_TOKEN);


            String jsonResponse = readResponse(urlConnection);

            return responseAsJsonObject.toString();
        }
        catch (Exception ex) {
            logger.e(ex);
            return null;
        }
        finally {
            if (urlConnection != null) {
                urlConnection.disconnect();
            }
        }
    }

    @Override
    protected void onPostExecute(String asyncTaskResult) {
        logger.i(asyncTaskResult);
    }



    public static HttpsURLConnection getHTTPSConnection(String requestMethod, String endpointUrl)
            throws IOException {
        URL url = new URL(endpointUrl);
        HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
        connection.setDoOutput(true);
        connection.setDoInput(true);
        connection.setRequestMethod(requestMethod);
        connection.setRequestProperty("Host", TWITTER_HOST);
        connection.setRequestProperty("User-Agent", TWITTER_USER_AGENT);
        connection.setUseCaches(false);
        return connection;
    }


    public static String readResponse(HttpsURLConnection connection) throws IOException {
        BufferedReader bufferedReader = null;
        try {
            StringBuilder stringBuilder = new StringBuilder();
            bufferedReader = new BufferedReader(new InputStreamReader(connection.getInputStream()));
            String line;
            while((line = bufferedReader.readLine()) != null) {
                stringBuilder.append(line + System.getProperty("line.separator"));
            }
            return stringBuilder.toString();
        }
        catch (IOException ex) {
            throw ex;
        }
        finally {
            if (bufferedReader != null) {
                bufferedReader.close();
            }
        }
    }
}
它变得非常令人沮丧。提前谢谢

如上所述,
httpCon.setDoOutput(true)
隐式地将请求方法设置为
POST
,因为无论何时发送请求正文,这都是默认方法

如果要使用
GET
,请删除该行

curl -X GET \
  'https://api.twitter.com/1.1/search/tweets.json?q=nasa&result_type=popular' \
  -H 'Authorization: Bearer <Application Only Bearer Token>' \
  -H 'Cache-Control: no-cache' \
  -H 'Host: api.twitter.com' \
  -H 'User-Agent: TwitterMotion User Agent'