質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

Q&A

解決済

3回答

5543閲覧

非同期通信でのアップロードエラー

gammaAI

総合スコア10

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

アップロード

アップロードは特定のファイルをウェブサーバに送るプロセスのことを指します。

非同期処理

非同期処理とは一部のコードを別々のスレッドで実行させる手法です。アプリケーションのパフォーマンスを向上させる目的でこの手法を用います。

例外

例外(exception)とは、プログラムの処理実行中に発生する、通常の処理の続行を妨げる特殊な事象のことを呼びます。この「例外」が発生した場合に、現在の処理を中断し、変わりに別の処理を実行させる事を「例外処理」と呼びます。

0グッド

0クリップ

投稿2015/11/05 10:07

こんにちは、Androidでプログラミングを行っているものです。
レンタルサーバを借りてそこの指定のディレクトリにandroid上のsdcard/0の内部ストレージにあるzipファイルを入れたいと思っています。

どれが必要なのかわからないので、調べて使いそうなjarはいれておきました
httpclient-4.5.1.jar
httpcore-4.4.3.jar
httpmime-4.5.1.jar
apache-mime4j-0.6.jar
commons-codec-1.9.jar
commons-logging1.2.jar

web上のサンプルコード↓を利用してやっています

mport java.io.File;
import java.io.IOException;

import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.ResponseHandler;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.content.FileBody;
import org.apache.http.impl.client.BasicResponseHandler;
import org.apache.http.impl.client.DefaultHttpClient;

//import android.app.Activity;
import android.os.AsyncTask;
import android.util.Log;
public class Upload extends AsyncTask<File, Integer, String> {

@SuppressWarnings("deprecation") @Override protected String doInBackground(File... params) { File filename = params[0]; try { HttpClient httpClient = new DefaultHttpClient(); // ポスト先のファイルを指定 HttpPost httpPost = new HttpPost("送り先"); ResponseHandler<String> responseHandler = new BasicResponseHandler(); MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE); // ファイル名&パスを指定 File file = new File(filename.toString()); Log.d("fileの中身",file.toString()); FileBody fileBody = new FileBody(file); // KEYとファイルを指定 multipartEntity.addPart("upfile", fileBody); httpPost.setEntity(multipartEntity); httpClient.execute(httpPost, responseHandler); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return null; }


このまま動くと思うのですが、以下のようなエラーが発生しました。
Uploadクラスの41行目、すなわち httpClient.execute(httpPost, responseHandler);という処理が原因?なのかわかりませんが、このエラーの原因を探してみても解決策が得られませんでした。
どうすればよいのかご存知の方がおられましたら教えていただけないでしょうか。よろしくお願いします。

11-05 17:56:18.584: E/AndroidRuntime(5046): FATAL EXCEPTION: AsyncTask #2
11-05 17:56:18.584: E/AndroidRuntime(5046): Process: (), PID: 5046
11-05 17:56:18.584: E/AndroidRuntime(5046): java.lang.RuntimeException: An error occured while executing doInBackground()
11-05 17:56:18.584: E/AndroidRuntime(5046): at android.os.AsyncTask$3.done(AsyncTask.java:304)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.util.concurrent.FutureTask.run(FutureTask.java:242)
11-05 17:56:18.584: E/AndroidRuntime(5046): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:231)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.lang.Thread.run(Thread.java:818)
11-05 17:56:18.584: E/AndroidRuntime(5046): Caused by: java.lang.NoSuchFieldError: No static field INSTANCE of type Lorg/apache/http/message/BasicHeaderValueFormatter; in class Lorg/apache/http/message/BasicHeaderValueFormatter; or its superclasses (declaration of 'org.apache.http.message.BasicHeaderValueFormatter' appears in /system/framework/ext.jar)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.entity.ContentType.toString(ContentType.java:153)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:53)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:236)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.entity.mime.MultipartEntity.getEntity(MultipartEntity.java:119)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.entity.mime.MultipartEntity.isChunked(MultipartEntity.java:138)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.protocol.RequestContent.process(RequestContent.java:84)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor.java:295)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:165)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:413)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:560)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:658)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:632)
11-05 17:56:18.584: E/AndroidRuntime(5046): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:621)
11-05 17:56:18.584: E/AndroidRuntime(5046): at application.Upload.doInBackground(Upload.java:41)
11-05 17:56:18.584: E/AndroidRuntime(5046): at application.Upload.doInBackground(Upload.java:1)
11-05 17:56:18.584: E/AndroidRuntime(5046): at android.os.AsyncTask$2.call(AsyncTask.java:292)
11-05 17:56:18.584: E/AndroidRuntime(5046): at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-05 17:56:18.584: E/AndroidRuntime(5046): ... 4 more
11-05 17:56:19.282: E/WindowManager(5046): android.view.WindowLeaked: Activity jp.gr.java_conf.gss.Report has leaked window com.android.internal.policy.impl.PhoneWindow$DecorView{255aca57 V.E..... R......D 0,0-1105,192} that was originally added here
11-05 17:56:19.282: E/WindowManager(5046): at android.view.ViewRootImpl.<init>(ViewRootImpl.java:363)
11-05 17:56:19.282: E/WindowManager(5046): at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:271)
11-05 17:56:19.282: E/WindowManager(5046): at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:85)
11-05 17:56:19.282: E/WindowManager(5046): at android.app.Dialog.show(Dialog.java:298)
11-05 17:56:19.282: E/WindowManager(5046): at application.Report.outputCommon(Report.java:635)
11-05 17:56:19.282: E/WindowManager(5046): at application.Report.access$1(Report.java:577)
11-05 17:56:19.282: E/WindowManager(5046): at application.Report$17.onClick(Report.java:531)
11-05 17:56:19.282: E/WindowManager(5046): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:162)
11-05 17:56:19.282: E/WindowManager(5046): at android.os.Handler.dispatchMessage(Handler.java:102)
11-05 17:56:19.282: E/WindowManager(5046): at android.os.Looper.loop(Looper.java:135)
11-05 17:56:19.282: E/WindowManager(5046): at android.app.ActivityThread.main(ActivityThread.java:5254)
11-05 17:56:19.282: E/WindowManager(5046): at java.lang.reflect.Method.invoke(Native Method)
11-05 17:56:19.282: E/WindowManager(5046): at java.lang.reflect.Method.invoke(Method.java:372)
11-05 17:56:19.282: E/WindowManager(5046): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:903)
11-05 17:56:19.282: E/WindowManager(5046): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:698)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

Android組込みのHttpComponent(HttpClient)の正しい使い方といくつかのtips
こちらの使い方を試してみてはいかがでしょうか。

投稿2015/11/05 12:52

yona

総合スコア18155

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gammaAI

2015/11/14 04:57

少し忙しく返信遅れてしまいました。 Androidのバージョンがアップデートされて、旧実装方法が検索エンジンで上位に表示される問題はなんとかしてほしいとも思いました。記事内で張られた別のページによるとhttpコンポーネントが2つのみでいいと書いてあり、入れ直してページの内容をトレースしてみたところ無事に稼働しました。ありがとうございました!
guest

0

スタックトレースに書かれている

org.apache.http.message.BasicHeaderValueFormatter

で検索したところ、以下のリンクが見つかりました。
http://stackoverflow.com/questions/27366430/getting-nosuchfielderror-instance-org-apache-http-message-basicheadervalueparser

こちらを確認してみてはいかがでしょうか?

投稿2015/11/05 11:02

KiyoshiMotoki

総合スコア4791

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gammaAI

2015/11/06 05:23

jarのバージョンも関係ありそうなので整えてみます!
guest

0

非同期タスクをメインのアクティビティで行っているのが悪そうな気がします。
非同期処理は別スレッドを立てて行わないといけないはずです

投稿2015/11/05 10:54

sakapun

総合スコア888

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gammaAI

2015/11/06 05:22

どこかの説明でdoInbackgroundで処理すればいけるような気がしましたが、それがいけないのでしょうか。。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問