こんにちは、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)
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2015/11/14 04:57