2012-02-08 6 views

답변

4

광범위하게 테스트했으며 Android 4.0 (ICS) 기기에서만 문제가 있음을 확인할 수 있습니다. 왜, 나는 확신 할 수 없다. HttpURLConnection의 일부가 4.0에서 변경 되었기 때문에 이러한 변경 사항 중 일부는 twitter4j와 호환되지 않는다.

는 나는이되었을 수 있습니다 생각 : Android 4.0 ICS turning HttpURLConnection GET requests into POST requests

을하지만 유효한 GET을 사실처럼 보인다는 tcpdump로 요청을 분석 한 후, 그러나 어떤 이유로, 트위터 API는 여전히 나쁜 말한다 요청 .. 누군가가 내가 볼 수있는 유일한 해결 방법은이 정확히 무엇 인 HttpClient를 대신 HttpURLConnection의의 사용 twitter4j에 대한 대체 백엔드를 작성하는 파괴되는 ICS/HttpURLConnection의에서 손쉽게 찾을 수없는 한

GET /1/users/show.json?include_entities=true&user_id=6842472 HTTP/1.1 
Authorization: OAuth oauth_consumer_key="<redacted>",oauth_signature_method="HMAC-SHA1",oauth_timestamp="1331150787",oauth_nonce="2157367237",oauth_version="1.0",oauth_token="<redacted>",oauth_signature="<redacted>" 
Accept-Encoding: gzip 
X-Twitter-Client-URL: http://twitter4j.org/en/twitter4j-2.2.5.xml 
User-Agent: twitter4j http://twitter4j.org/ /2.2.5 
X-Twitter-Client-Version: 2.2.5 
X-Twitter-Client: Twitter4J 
Host: api.twitter.com 
Connection: Keep-Alive 


HTTP/1.1 400 Bad Request 
Date: Wed, 07 Mar 2012 20:06:30 GMT  
Status: 400 Bad Request 
X-RateLimit-Class: api 
X-RateLimit-Reset: 1331153824 
X-Revision: DEV 
Last-Modified: Wed, 07 Mar 2012 20:06:30 GMT 
X-Frame-Options: SAMEORIGIN 
X-Transaction: a0bf805e990a5c79 
Content-Type: application/json; charset=utf-8 
X-RateLimit-Remaining: 0 
X-RateLimit-Limit: 150 
Pragma: no-cache 
Cache-Control: no-cache, no-store, must-revalidate, pre-check=0, post-check=0 
X-Runtime: 0.00742 
X-MID: 2295d07237fcb4763f7f54d2bf46e27dd40e022f 
Expires: Tue, 31 Mar 1981 05:00:00 GMT 
Vary: Accept-Encoding 
Server: tfe 
Transfer-Encoding: chunked 
Connection: close 
Content-Encoding: gzip 
Set-Cookie: 
... 

나는 할 계획이다.

편집 : 그래서 나는 아파치 httpclient를 사용하는 twitter4j에 대한 클라이언트 백엔드를 썼고, 똑같은 문제를 겪었다 !!

ConfigurationBuilder configurationBuilder = new ConfigurationBuilder(); 
configurationBuilder.setOAuthConsumerKey(Const.CONSUMER_KEY); 
configurationBuilder.setOAuthConsumerSecret(Const.CONSUMER_SECRET); 
configurationBuilder.setUseSSL(true); 
Configuration configuration = configurationBuilder.build(); 
twitter = new TwitterFactory(configuration).getInstance(); 

setUseSSL (참) 마법 라인 :

이처럼 twitter4j 인스턴스를 초기화한다 : 좀 더 불면의 시간, 와이어 샤크는 실제로 작동 다음과 같은 매우 편리한 솔루션, 저를 가져왔다.

+0

당신은 당신의 노력에 찬사, gj 및 명성이 있습니다. –