Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/357.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
461使用Java阻止{“错误”:[{“消息”:“需要SSL”,“代码”:92}]_Java_Twitter_Twitter Oauth - Fatal编程技术网

461使用Java阻止{“错误”:[{“消息”:“需要SSL”,“代码”:92}]

461使用Java阻止{“错误”:[{“消息”:“需要SSL”,“代码”:92}],java,twitter,twitter-oauth,Java,Twitter,Twitter Oauth,我正在开发Twitter Rest示例。在本例中,我希望调用TwitterRESTAPI。当我运行下面的程序时,我看到了错误。你能告诉我是什么问题吗 public class JavaRestTweet { static String consumerKeyStr = "RSvE3XXXXXXXXXXXX"; static String consumerSecretStr = "nKEWRoOcIXXXXXXXXXXXXXXXXXXXXXXXXXXXX"; static

我正在开发Twitter Rest示例。在本例中,我希望调用TwitterRESTAPI。当我运行下面的程序时,我看到了错误。你能告诉我是什么问题吗

public class JavaRestTweet {
    static String consumerKeyStr = "RSvE3XXXXXXXXXXXX";
    static String consumerSecretStr = "nKEWRoOcIXXXXXXXXXXXXXXXXXXXXXXXXXXXX";
    static String accessTokenStr = "1371430742-XXXXXXXXXXXXXXXXXXXXXXXXXX";
    static String accessTokenSecretStr = "6ofNXMXXXXXXXXXXXXXXXXXXXXXXXXX";

    public static void main(String[] args) throws Exception {
        OAuthConsumer oAuthConsumer = new CommonsHttpOAuthConsumer(consumerKeyStr, consumerSecretStr);
        oAuthConsumer.setTokenWithSecret(accessTokenStr, accessTokenSecretStr);

        HttpPost httpPost = new HttpPost(
                "http://api.twitter.com/1.1/statuses/update.json?status=Hello%20Twitter%20World.");

        oAuthConsumer.sign(httpPost);

        HttpClient httpClient = new DefaultHttpClient();
        HttpResponse httpResponse = httpClient.execute(httpPost);

        int statusCode = httpResponse.getStatusLine().getStatusCode();
        System.out.println(statusCode + ':' + httpResponse.getStatusLine().getReasonPhrase());
        System.out.println(IOUtils.toString(httpResponse.getEntity().getContent()));
    }
}
错误:

461 Forbidden
{"errors":[{"message":"SSL is required","code":92}]}
pom.xml

<properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <!-- Logging -->
        <logback.version>1.0.13</logback.version>
        <slf4j.version>1.7.5</slf4j.version>
    </properties>

    <dependencies>
        <dependency>
            <groupId>oauth.signpost</groupId>
            <artifactId>signpost-core</artifactId>
            <version>1.2.1.2</version>
        </dependency>

        <dependency>
            <groupId>oauth.signpost</groupId>
            <artifactId>signpost-commonshttp4</artifactId>
            <version>1.2.1.2</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.5</version>
        </dependency>

        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpcore</artifactId>
            <version>4.3</version>
        </dependency>
        <dependency>
            <groupId>commons-codec</groupId>
            <artifactId>commons-codec</artifactId>
            <version>1.10</version>
        </dependency>

        <!-- Logging with SLF4J & LogBack -->
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-api</artifactId>
            <version>${slf4j.version}</version>
            <scope>compile</scope>
        </dependency>

        <dependency>
            <groupId>ch.qos.logback</groupId>
            <artifactId>logback-classic</artifactId>
            <version>${logback.version}</version>
            <scope>runtime</scope>
        </dependency>

        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

UTF-8
1.0.13
1.7.5
路标
路标核心
1.2.1.2
路标
路标-HTTP4
1.2.1.2
公地io
公地io
2.5
org.apache.httpcomponents
httpcore
4.3
通用编解码器
通用编解码器
1.10
org.slf4j
slf4j api
${slf4j.version}
编译
回写
回归经典
${logback.version}
运行时
朱尼特
朱尼特
4.12
测试

错误消息准确地告诉您需要知道的内容:

SSL是必需的

问题似乎是您在代码中使用的是http://而不是https://:

http://api.twitter.com/1.1/statuses/update.json

错误消息准确地告诉您需要知道的内容:

SSL是必需的

问题似乎是您在代码中使用的是http://而不是https://:

http://api.twitter.com/1.1/statuses/update.json
var oauth\u consumer\u key=“您的消费者密钥;
var oauth_consumer_secret=“secret key”;
if(请求[“oauth_令牌”]==null)
{
OAuthTokenResponse reqToken=OAuthUtility.GetRequestToken(
oauth_消费者_密钥,
oauth_消费者_机密,
Request.Url.AbsoluteUri);
Response.Redirect(string.Format(“https://twitter.com/oauth/authorize?oauth_token={0}",
请求令牌(Token.Token));
}
其他的
{
string requestToken=Request[“oauth_token”].ToString();
字符串pin=Request[“oauth_验证程序”].ToString();
var tokens=OAuthUtility.GetAccessToken(
oauth_消费者_密钥,
oauth_消费者_机密,
请求令牌,
针);
OAuthTokens accesstoken=新的OAuthTokens()
{
AccessToken=tokens.Token,
AccessTokenSecret=tokens.TokenSecret,
ConsumerKey=oauth_consumer_key,
ConsumerCret=oauth\u consumer\u secret
};
//取消对get likes和retweet count的注释
//var response=TwitterStatus.Show(accesstoken,Convert.ToDecimal(post id),new StatusUpdateOptions(){UseSSL=true,APIBaseAddress=”https://api.twitter.com/1.1/" });
TwitterResponse=TwitterStatus.Update(accesstoken,“使用REST API从Asp.Net网站发布此推文”,new StatusUpdateOptions(){UseSSL=true,APIBaseAddress=”https://api.twitter.com/1.1/" });
var obj=JObject.Parse(response.Content.ToString());
变量id=(字符串)obj[“id”].ToString();
}
var oauth\u consumer\u key=“您的消费者密钥;
var oauth_consumer_secret=“secret key”;
if(请求[“oauth_令牌”]==null)
{
OAuthTokenResponse reqToken=OAuthUtility.GetRequestToken(
oauth_消费者_密钥,
oauth_消费者_机密,
Request.Url.AbsoluteUri);
Response.Redirect(string.Format(“https://twitter.com/oauth/authorize?oauth_token={0}",
请求令牌(Token.Token));
}
其他的
{
string requestToken=Request[“oauth_token”].ToString();
字符串pin=Request[“oauth_验证程序”].ToString();
var tokens=OAuthUtility.GetAccessToken(
oauth_消费者_密钥,
oauth_消费者_机密,
请求令牌,
针);
OAuthTokens accesstoken=新的OAuthTokens()
{
AccessToken=tokens.Token,
AccessTokenSecret=tokens.TokenSecret,
ConsumerKey=oauth_consumer_key,
ConsumerCret=oauth\u consumer\u secret
};
//取消对get likes和retweet count的注释
//var response=TwitterStatus.Show(accesstoken,Convert.ToDecimal(post id),new StatusUpdateOptions(){UseSSL=true,APIBaseAddress=”https://api.twitter.com/1.1/" });
TwitterResponse=TwitterStatus.Update(accesstoken,“使用REST API从Asp.Net网站发布此推文”,new StatusUpdateOptions(){UseSSL=true,APIBaseAddress=”https://api.twitter.com/1.1/" });
var obj=JObject.Parse(response.Content.ToString());
变量id=(字符串)obj[“id”].ToString();
}