AndroidからサーバにテキストファイルをPOST送信したい
解決済
回答 2
投稿
- 評価
- クリップ 0
- VIEW 4,318
環境
- Android Studio
- httpclient 4.5.2
- httpcore 4.5.2
- httpmime 4.4.4
現在のソースコード
(new Thread(new Runnable() {
@Override
public void run() {
String filename = "target.csv";
try {
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("phpファイル");
ResponseHandler<String> responseHandler = new BasicResponseHandler();
MultipartEntity multipartEntity = new MultipartEntity(HttpMultipartMode.BROWSER_COMPATIBLE);
File file = new File(filename);
FileBody fileBody = new FileBody(file);
multipartEntity.addPart("file", fileBody);
httpPost.setEntity(multipartEntity);
httpClient.execute(httpPost, responseHandler);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
})).start();
ここでのtarget.csvはAndroid上でファイルを作成しています。
もしかして、Android上で作成したファイルは送信できないとかあるのでしょうか?
エラー
httpClient.execute(httpPost, responseHandler);
の時点でエラーとなっています。
06-01 18:13:35.422 15117-15189/com.example.hogehoge E/AndroidRuntime: FATAL EXCEPTION: Thread-2951
Process: com.example.hogehoge, PID: 15117
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)
at org.apache.http.entity.ContentType.toString(ContentType.java:153)
at org.apache.http.entity.mime.MultipartFormEntity.<init>(MultipartFormEntity.java:56)
at org.apache.http.entity.mime.MultipartEntityBuilder.buildEntity(MultipartEntityBuilder.java:236)
at org.apache.http.entity.mime.MultipartEntity.getEntity(MultipartEntity.java:119)
at org.apache.http.entity.mime.MultipartEntity.isChunked(MultipartEntity.java:140)
at org.apache.http.protocol.RequestContent.process(RequestContent.java:79)
at org.apache.http.protocol.BasicHttpProcessor.process(BasicHttpProcessor.java:290)
at org.apache.http.protocol.HttpRequestExecutor.preProcess(HttpRequestExecutor.java:160)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:408)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:555)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:653)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627)
at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:616)
at com.example.hogehoge.MainActivity$3$1.run(MainActivity.java:109)
at java.lang.Thread.run(Thread.java:818)
ファイルをサーバに送信するにはどうしたらいいでしょうか?よろしくお願いいたします。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
checkベストアンサー
0
ファイルシステムのルートにファイルがあるんですか?そこにファイルって作成できました?
ファイルパスの指定先が正しいかを調べてみたら良いと思います。
あとはContent-Typeの設定が無いことも気になります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
HttpPost httpPost = new HttpPost("phpファイル");
ここ、何かのサンプルを丸写ししたのでしょうか、送信先のURLが入るべき場所にちゃんとしたURLが入っていません。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.35%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2016/06/02 00:39 編集
CONTENT_TYPEにapplication/x-www-form-urlencoded;charset=UTF-8しても同じところで落ちました.
一応ファイルの中身を表示するのは可能なのでファイルの作成は出来ていると思われます.
やはりファイルの場所が間違ってるのでしょうかね・・・^;
2016/06/02 07:24
どうやって作ったのかとどうやって中身を確認したのかを教えてください。
2016/06/03 13:14 編集
色々と説明不足で申し訳ないです。
アプリ上でファイル作成していて、SDにファイルを作成していない状態でした。SDカード上にファイルを作成して、パスを指定して送ると無事送ることが出来ました。
教えていただきありがとうございました。