블로그를 방문해 주신 한 개발자 분으로 부터 아래와 같은 질문을 받았다.
http://groups.google.com/group/twitter4j/browse_frm/thread/4319a99a2a656275?tvc=1
twitter = new TwitterFactory().getInstance("아이디", "비밀번호");
Status status;
try {
status = twitter.updateStatus("Test msg1");
Log.e("Test","Successfully updated the status to [Test msg1].");
status = twitter.updateStatus("Test msg2");
Log.e("Test","Successfully updated the status to [Test msg2].");
} catch (TwitterException e) {
e.printStackTrace();
}
위와 같이 코드를 작성하고 updateStatus를 하고나서 메시지를 바꿔서 바로 다른 updateStatus를 하면 TwitterException : -1 이 발생합니다. (만약 3번째 updateStatus를 실행하면 잘 됩니다. 그러나 4번째는 문제발생...)
같은 소스를 일반 Java App로 만들어서 실행하면 문제가 없이 잘 돌아갑니다.
왜 안드로이드에서만 이런 문제가 발생할까요?
물론 답변을 할 수 없는 상태다. 나도 모르기 때문에;;
하지만 한가하던 터라 위와 관련된 내용을 좀 찾아보았다.
그전에, 내가 쓰고 있는 것은 Twitter4J-2.0.10 의 버젼 이었고
위의 코드는 문제 없이 잘 동작 하였다.
Twitter4J-2.1.0 부터 문제가 발생한 것이다.
Twitter4J group(http://groups.google.com/group/twitter4j?lnk=iggc)과
Project site(http://twitter4j.org/jira/browse/TFJ)를 검색해보니
많은 Android 개발자들이 Twitter4J 사용시 위와 같은 문제로 고민하고 있음을 알게 되었다.
다음은 검색 결과 중 주요 내용만 뽑아보았다.
31. Yusuke Yamamoto 1월29일, 오후3시10분
Hi,
I haven't managed to look into it yet.
I have no idea why adding "Connection: close" to the request header doesn't work for the issue.
http://java.sun.com/j2se/1.5.0/docs/guide/net/http-keepalive.html
This can be a Dalvik/Harmony side issue as Miyuuu indicated.
http://stackoverflow.com/questions/1440957/httpurlconnection-getrespo...
Does any have any idea how to workaround the problem?
I've just filed an Jira issue to track the problem.
http://twitter4j.org/jira/browse/TFJ-296
Thanks,
--
Yusuke Yamamoto
yus...@mac.com
그렇다..
결론은 아직 해결이 되지 않았다 --;;
http client를 이용해서 server와 connection을 한 후 두번째 connection을 할 경우 fail이 발생을 한다.
android 의 경우 성능을 높이기 위해서 최초 연결이 된 경우 connection을 계속해서 유지하고 있도록 동작을 하고
이것 또한 Twitter4J가 위와 같은 exception이 발생하게 한다고 한다.
그래서 Twitter4J를 그냥 JVM에서 돌아가도록 하면 이런 문제는 또 발생하지 않는다.
DALVIK 에서 구동 될때만 문제가 생긴다는 것이다. (http://code.google.com/p/android/issues/detail?id=2800)
문제를 해결하기 위해서 여러 곳에서 움직임이 있는데
그중 하나만 관심을 가지고 지켜본다면 해결 된 때를 알 수 있을 것 같다.
Stackoverflow
Twitter4J
Twitter4J Group
'TwitterAPI' 카테고리의 다른 글
[Twitter4J] OAuth support (0) | 2011.02.10 |
---|---|
Twitter4J를 이용한 Android Twitter Application 예제 1 (5) | 2009.11.19 |
Twitter4J를 사용하기 위한 JAVA CLASSPATH 설정 (0) | 2009.10.22 |