Re: [Twitter4J] yfrog・Twitpicへのアップロードができません

509 views
Skip to first unread message

Yusuke Yamamoto

unread,
Jun 24, 2012, 5:01:22 AM6/24/12
to twitt...@googlegroups.com
こんにちは。

妙ですね。これはAndroid4.0固有の現象でしょうか?
私の手元ではあまりAndroidの環境は試していないのですがスタンドアロンのJavaアプリケーションでも再現しますか?
> また、useSSLをfalseにしてみましたが、twitter4j側でハードコーディングしてあるようで、効果ありませんでした。
useSSLをtrueにハードコードしていませんか?
> System.setProperty("twitter4j.http.useSSL", "true");
--
山本 裕介
yus...@mac.com

このメールは: [x] ブログ/Twitterへ転載可能 [ ] 私信
@yusukey
http://samuraism.jp/



On 2012/06/24, at 17:05, ぺぺたろう(azyobuzin) wrote:

> このMLでは初めてお世話になります、azyobuzinです。
>
> Android4.0用のアプリを開発しているのですが、yfrog・TwitpicへのJPEG画像をアップロードしようとすると3分くらい(タイムアウトは設定していません)待たされてエラーがでます。
>
> 問題のコード: https://github.com/azyobuzin/saostar/blob/master/src/net/azyobuzi/azyotter/saostar/activities/UpdateStatusActivity.java#L399 399~513
>
> 設定:
> System.setProperty("twitter4j.http.useSSL", "true");
> System.setProperty("twitter4j.stream.user.repliesAll", "false");
>
> エラー内容:
> W/System.err(22593): Write error: ssl=0x9aff90: I/O error during system call, Broken pipeRelevant discussions can be found on the Internet at:
> W/System.err(22593): http://www.google.co.jp/search?q=ea09dc6d or
> W/System.err(22593): http://www.google.co.jp/search?q=0446f514
> W/System.err(22593): TwitterException{exceptionCode=[ea09dc6d-0446f514 0237e8c8-8497a933], statusCode=-1, retryAfter=-1, rateLimitStatus=null, featureSpecificRateLimitStatus=null, version=2.2.6-SNAPSHOT(build: aaa0f9a9ac5eac6841f95da337239d024c02d7a2)}
> W/System.err(22593): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:200)
> W/System.err(22593): at twitter4j.internal.http.HttpClientWrapper.request(HttpClientWrapper.java:65)
> W/System.err(22593): at twitter4j.internal.http.HttpClientWrapper.post(HttpClientWrapper.java:114)
> W/System.err(22593): at twitter4j.media.AbstractImageUploadImpl.upload(AbstractImageUploadImpl.java:111)
> W/System.err(22593): at twitter4j.media.AbstractImageUploadImpl.upload(AbstractImageUploadImpl.java:74)
> W/System.err(22593): at net.azyobuzi.azyotter.saostar.activities.UpdateStatusActivity$YfrogUploadTask.doInBackground(UpdateStatusActivity.java:482)
> W/System.err(22593): at net.azyobuzi.azyotter.saostar.activities.UpdateStatusActivity$YfrogUploadTask.doInBackground(UpdateStatusActivity.java:1)
> W/System.err(22593): at android.os.AsyncTask$2.call(AsyncTask.java:264)
> W/System.err(22593): at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:305)
> W/System.err(22593): at java.util.concurrent.FutureTask.run(FutureTask.java:137)
> W/System.err(22593): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:208)
> W/System.err(22593): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1076)
> W/System.err(22593): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:569)
> W/System.err(22593): at java.lang.Thread.run(Thread.java:856)
> W/System.err(22593): Caused by: javax.net.ssl.SSLException: Write error: ssl=0x9aff90: I/O error during system call, Broken pipe
> W/System.err(22593): at org.apache.harmony.xnet.provider.jsse.NativeCrypto.SSL_write(Native Method)
> W/System.err(22593): at org.apache.harmony.xnet.provider.jsse.OpenSSLSocketImpl$SSLOutputStream.write(OpenSSLSocketImpl.java:713)
> W/System.err(22593): at java.io.ByteArrayOutputStream.writeTo(ByteArrayOutputStream.java:231)
> W/System.err(22593): at libcore.net.http.RetryableOutputStream.writeToSocket(RetryableOutputStream.java:70)
> W/System.err(22593): at libcore.net.http.HttpEngine.readResponse(HttpEngine.java:777)
> W/System.err(22593): at libcore.net.http.HttpURLConnectionImpl.getResponse(HttpURLConnectionImpl.java:274)
> W/System.err(22593): at libcore.net.http.HttpURLConnectionImpl.getResponseCode(HttpURLConnectionImpl.java:479)
> W/System.err(22593): at libcore.net.http.HttpsURLConnectionImpl.getResponseCode(HttpsURLConnectionImpl.java:133)
> W/System.err(22593): at twitter4j.internal.http.HttpResponseImpl.<init>(HttpResponseImpl.java:35)
> W/System.err(22593): at twitter4j.internal.http.HttpClientImpl.request(HttpClientImpl.java:164)
> W/System.err(22593): ... 13 more
>
> 写真(jpeg)とスクリーンショット(png)を試してみましたが、pngだけはうまくアップロードできます。
>
> 試したこと
> • https://groups.google.com/forum/?fromgroups#!topic/twitter4j-j/VrGLqsGEarI というのを見つけてKeepAliveの設定を変えてみた
> • http://blog.loadlimits.info/2011/10/android%E3%81%A8twitter4j%E3%81%A7%E5%85%AC%E5%BC%8F%E7%94%BB%E5%83%8F%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89api%E3%82%92%E4%BD%BF%E3%81%86/ のようにFileを渡してみた
> をやってみましたが、効果ありませんでした。
>
> また、useSSLをfalseにしてみましたが、twitter4j側でハードコーディングしてあるようで、効果ありませんでした。
>
> twitter4jを使っていて画像投稿が動いてるちゃんとアプリがあって困惑しています。
> 解決方法のご教示よろしくお願い致します。
>
> --
> Twitter4J の最新情報をフォロー: http://twitter.com/t4j_news
> 現在のバージョン - 安定: 2.2.5, 開発中: 2.2.6-SNAPSHOT
> http://twitter4j.org/jira/secure/IssueNavigator.jspa?requestId=10030
> バグトラッキング: http://twitter4j.org/jira/browse/TFJ
>
> このメールは次の Google グループの参加者に送られています: Twitter4J J
> このグループにメールで投稿: twitt...@googlegroups.com
> このグループから退会する: http://groups.google.com/group/twitter4j-j?hl=ja

ぺぺたろう(azyobuzin)

unread,
Jun 24, 2012, 6:15:47 AM6/24/12
to twitt...@googlegroups.com
>useSSLをtrueにハードコードしていませんか?
>> System.setProperty("twitter4j.http.useSSL", "true");
twitter4jの画像アップロード部分のソースにhttps〜と書いてあったので変えられないのかな?と思いました。
SSLをオフにしたときは、システムプロパティのuseSSLはtrueのまま、ConfigrationBuilderでsetUseSSL?でfalseにしました。

ぺぺたろう(azyobuzin)

unread,
Jun 25, 2012, 4:45:08 AM6/25/12
to twitt...@googlegroups.com
こんにちは。

> 私の手元ではあまりAndroidの環境は試していないのですがスタンドアロンのJavaアプリケーションでも再現しますか? 
Android版ではないほうを使ってコンソールアプリを書いてみましたが、正しく動きました。
無題.png

kimukou buzz

unread,
Jun 25, 2012, 5:33:33 AM6/25/12
to twitt...@googlegroups.com
こんちには。
GalaxyNexus(Android4.0) でもうごくTwiPicに投稿するアプリを作っていますが
正常に投稿できていますね。

ソース差分的には
MimeTypeMap.getSingleton().getExtensionFromMimeType
辺りは使っていません

.setMediaProvider(MediaProvider.TWITPIC)
な形で指定しているあたりでしょうか。

あとupload自体は
File newfile //ローカルにあるファイルを指定
String str=""//TwitPicに投稿する文言

uploadXXX.upload(newfile,str);
みたいな形でuploadしています

bitmap自体は
Bitmap bb =XXXX;
ByteArrayOutputStream jpg = new ByteArrayOutputStream();
bb.compress(CompressFormat.JPEG, 100, jpg);
File newfile = new File("/data/data/pacagename/XXXXX")
newfile.createNewFile();
FileOutputStream fo = new FileOutputStream(newfile);
fo.write(jpg.toByteArray());
fo.close();

な感じで一度ローカルに保存しています

泥臭いやり方かもしれませんが参考に鳴れば

2012年6月25日 17:45 ぺぺたろう(azyobuzin) <azyo...@gmail.com>:
> こんにちは。
>
>> 私の手元ではあまりAndroidの環境は試していないのですがスタンドアロンのJavaアプリケーションでも再現しますか?
> Android版ではないほうを使ってコンソールアプリを書いてみましたが、正しく動きました。

ぺぺたろう(azyobuzin)

unread,
Jun 25, 2012, 5:39:19 AM6/25/12
to twitt...@googlegroups.com
ありがとうございます。一度ローカルに保存する方法を試してみます。

2012年6月25日月曜日 18時33分33秒 UTC+9 kimukou_26:

Mocel

unread,
Jun 25, 2012, 9:51:15 AM6/25/12
to twitt...@googlegroups.com
こんにちは。

ソースを見た感じでは、すでに ContentProvider に登録された画像をアップロードしているようですのでローカルにファイルとして保存し直す必要はないと思います。そもそも最初からローカルファイルを読み込んでいますから。

エラーは毎回必ず出るのでしょうか?
それともうまくいく場合もあったりするのでしょうか?

ではでは。

-Mocel

ぺぺたろう(azyobuzin)

unread,
Jun 26, 2012, 10:45:53 AM6/26/12
to twitt...@googlegroups.com
こんにちは。

何回か画像投稿を試した結果、Eclipseでデバッグしてるときだけ失敗するような気がします。
すごく状況が理解不能です。。

2012年6月25日月曜日 22時51分15秒 UTC+9 Mocel:

Mocel

unread,
Jun 27, 2012, 10:14:40 AM6/27/12
to twitt...@googlegroups.com
推測でしかないですけど、TwitPic も yFrog もわりとサーバーが重くて通信に失敗しやすい印象がありますので、「たまたま」失敗しただけなんじゃないでしょうか。
PNG は OK だけど JPEG はたまに NG、というのも HTTPS とかまったく関係ない事柄ですし、同じ画像データで何度か試せば成功するようなら、ほぼ「たまたま失敗した」ということになるんじゃないかと思います(よくある話です)。

Twitter もそうですけど、Web サービスの API は「リクエストに失敗して当然」という認識で気楽(?)に構えておくのがお勧めです。

ではでは。

-Mocel

ぺぺたろう(azyobuzin)

unread,
Jun 28, 2012, 5:03:30 AM6/28/12
to twitt...@googlegroups.com
こんにちは。

Twitpic・yfrogの重さは普段から十分理解しているつもりです。

そこで、普通に起動させて3回、デバッグで3回Twitpicに投げてみたのですが、見事にデバッグ時だけ失敗しました。
pngはデバッグでもアップロードできました。

報告までに。

2012年6月27日水曜日 23時14分40秒 UTC+9 Mocel:

Mocel

unread,
Jun 29, 2012, 4:51:25 AM6/29/12
to twitt...@googlegroups.com
普通に起動した場合とデバッグ実行した場合の、どちらも Android 端末の実機上で実行されているのでしょうか?
エミュレーターを使われていないのでしたら端末に依存した問題の可能性もあるので、機種名がわかれば何かアドバイスできるかもしれません(GALAXY NEXUS ですかね?)。
エミュレーター上で実行されてるのでしたら、可能でしたら実機で試すとどうなるのかも知りたいところです。

ではでは。

-Mocel

ぺぺたろう(azyobuzin)

unread,
Jun 29, 2012, 10:28:21 AM6/29/12
to twitt...@googlegroups.com
こんにちは。
 
テスト環境はGALAXY NEXUSで、ドコモROM4.0.4、root化済みです。
エミュレータは重すぎてテストする気が起きなくて使っていませんでした。

2012年6月29日金曜日 17時51分25秒 UTC+9 Mocel:
Reply all
Reply to author
Forward
0 new messages