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

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

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

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Android

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

5997閲覧

AndroidStudioからサーバへのファイル送信で「問題が発生したため、~を終了します。」と出ます。

m2cha

総合スコア12

Java

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

POST

POSTはHTTPプロトコルのリクエストメソッドです。ファイルをアップロードしたときや入力フォームが送信されたときなど、クライアントがデータをサーバに送る際に利用されます。

Android

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

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2016/09/16 09:38

編集2016/09/16 11:24

###前提・実現したいこと

AndroidStudioでpicture.pngというpngの画像ファイルを

サーバにPOST送信するメソッドをsubActivityクラスに作りました。

(色んなサイトのコードを参考に、というかコピペして作りました…(:_;))

ですがMainActivityでsubActivityをextendsして

メソッドを実行しようとすると、

「問題が発生したため、~を終了します。」という

メッセージが表示され、アプリが強制終了してしまいます。

###発生している問題・エラーメッセージ

問題が発生したため、~(アプリ名)を終了します。

###参考にしたページ

Androidから動画ファイルをアップロード
http://wiki.toridge.com/index.php?android-%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89(okHttp3)

OkHttp3を学ぶ。①AsyncTaskで画像を連続取得
http://qiita.com/kmry2045/items/870127b1dc6b25bbcbdf

###該当のソースコード

↓subActivity.java

Java

1 2import android.app.Activity; 3import android.os.AsyncTask; 4import android.os.Environment; 5import android.util.Log; 6import android.widget.TextView; 7 8import java.io.File; 9import java.io.IOException; 10 11import okhttp3.Headers; 12import okhttp3.MediaType; 13import okhttp3.MultipartBody; 14import okhttp3.OkHttpClient; 15import okhttp3.Request; 16import okhttp3.RequestBody; 17import okhttp3.Response; 18import okio.Buffer; 19 20/** 21 * Created by m2cha on 2016/09/16. 22 */ 23public class subActivity extends Activity { 24 25 private String TAG = "Activity"; 26 private TextView mtextView; 27 int RESULT_PICK_FILENAME = 1; 28 29 protected void send(){ 30 String path = Environment.getExternalStorageDirectory().getPath(); 31 path = path + "/picturedir/picture.png"; 32 //文字列の取得 33 getRequestWithPOST(path);//POST 34 //Toast.makeText( this, picturePath, Toast.LENGTH_LONG).show(); 35 } 36 37 public void getRequestWithPOST(final String filePath) { 38 Log.d(TAG, filePath); 39 //Log.i(TAG,category); 40 41 new AsyncTask<Void, Void, String>() { 42 @Override 43 protected String doInBackground(Void... params) { 44 String result = null; 45 46 // リクエストボディを作る 47 final MediaType TEXT = MediaType.parse("text/plain; charset=utf-8"); 48 final MediaType IMAGE = MediaType.parse("image/png"); 49 50 final String BOUNDARY = String.valueOf(System.currentTimeMillis()); 51 52 RequestBody requestBody = new MultipartBody.Builder(BOUNDARY).setType(MultipartBody.FORM) 53 .addPart(Headers.of("Content-Disposition", "form-data; name=\"category\""), 54 RequestBody.create(TEXT, "IMAGE") 55 ) 56 .addFormDataPart("upfile", "upfile.png", RequestBody.create(IMAGE, new File(filePath))) 57 .build(); 58 59 // Content-Length の作成 不要ならいらない。okio.Buffer オブジェクトを利用。 60 Buffer buffer = new Buffer(); 61 String CONTENT_LENGTH; 62 try { 63 requestBody.writeTo(buffer); 64 CONTENT_LENGTH = String.valueOf(buffer.size()); 65 } catch (IOException e) { 66 e.printStackTrace(); 67 CONTENT_LENGTH = "-1"; 68 } finally { 69 buffer.close(); 70 } 71 72 73 // リクエストオブジェクトを作る。.post() 74 Request request = new Request.Builder() 75 .addHeader("Content-Length", CONTENT_LENGTH) 76 .url("送信先URL") 77 .post(requestBody) 78 .build(); 79 80 // クライアントオブジェクトを作る。 81 OkHttpClient client = new OkHttpClient(); 82 83 // 実行。リクエストして結果を受け取る。 84 try { 85 Response response = client.newCall(request).execute(); 86 result = response.body().string(); 87 88 } catch (IOException e) { 89 e.printStackTrace(); 90 } 91 92 // 返す 93 return result; 94 } 95 96 @Override 97 protected void onPostExecute(String result) { 98 mtextView.setText(result); 99 Log.d(TAG, result); 100 } 101 }.execute(); 102 } 103} 104

↓MainActivity.java

Java

1 2import android.os.Bundle; 3 4public class MainActivity extends subActivity { 5 6 @Override 7 protected void onCreate(Bundle savedInstanceState) { 8 super.onCreate(savedInstanceState); 9 setContentView(R.layout.activity_main); 10 11 send(); 12 } 13} 14 15

↓Projectsファイルの中のappの中のbuild.gradleのdependencies
post通信ではokhttp3のライブラリを使っています。

dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.github.kevinsawicki:http-request:5.6' compile 'com.koushikdutta.ion:ion:2.+' compile 'com.squareup.okhttp3:okhttp:3.2.0' compile 'com.mcxiaoke.volley:library:1.0.19' compile 'com.loopj.android:android-async-http:1.4.9' }

↓Manifestに追加したpermission

<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>

###補足情報(言語/FW/ツール等のバージョンなど)
Android/AndroidStudio

###最後に…

Androidの開発を初めて半年程度の超初心者ですので、
専門的な知識が拙く変な文章の部分もあると思いますm(_ _)mすみません…

解決方法がお分かりの方は回答をお願いしますm(_ _)m

###追記

LogcutのErrorのログです。

09-16 20:10:17.049 32630-32710/com.m2cha.sendtest E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1
Process: com.m2cha.sendtest, PID: 32630
java.lang.RuntimeException: An error occurred while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:309)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354)
at java.util.concurrent.FutureTask.setException(FutureTask.java:223)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.IllegalArgumentException: unexpected url: 送信先URL
at okhttp3.Request$Builder.url(Request.java:143)
at com.m2cha.sendtest.subActivity$1.doInBackground(subActivity.java:77)
at com.m2cha.sendtest.subActivity$1.doInBackground(subActivity.java:42)
at android.os.AsyncTask$2.call(AsyncTask.java:295)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)

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

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

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

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

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

yona

2016/09/16 10:52

エラーログを追記してください。
m2cha

2016/09/16 11:22 編集

LogcutのErrorのログです。 09-16 20:10:17.049 32630-32710/com.m2cha.sendtest E/AndroidRuntime: FATAL EXCEPTION: AsyncTask #1 Process: com.m2cha.sendtest, PID: 32630 java.lang.RuntimeException: An error occurred while executing doInBackground() at android.os.AsyncTask$3.done(AsyncTask.java:309) at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:354) at java.util.concurrent.FutureTask.setException(FutureTask.java:223) at java.util.concurrent.FutureTask.run(FutureTask.java:242) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818) Caused by: java.lang.IllegalArgumentException: unexpected url: 送信先URL at okhttp3.Request$Builder.url(Request.java:143) at com.m2cha.sendtest.subActivity$1.doInBackground(subActivity.java:77) at com.m2cha.sendtest.subActivity$1.doInBackground(subActivity.java:42) at android.os.AsyncTask$2.call(AsyncTask.java:295) at java.util.concurrent.FutureTask.run(FutureTask.java:237) at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588) at java.lang.Thread.run(Thread.java:818)
m2cha

2016/09/16 11:24 編集

すみません、ごちゃごちゃしたので質問の本文を編集して 最下部にもう一度書きます。
guest

回答2

0

エラーメッセージの通り、設定しているURLが「送信先URL」というわけのわからないURLを設定しているせいですね。
正しい送信先URLを設定しましょうね。

投稿2016/09/16 13:35

yona

総合スコア18155

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

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

m2cha

2016/09/16 14:06

実際には"送信先URL"ではなく、PHPのサーバのURLを設定しています。 ですがアプリが落ちるんです…orz 送信はできるんですが…アプリが落ちます。
yona

2016/09/17 09:51

使用しているライブラリをGitHubで見ると、不正なURLを渡すとエラーが出るようです。 URLは一般的なものでしょうか。 また、通信が発生している箇所は1箇所でしょうか。POST通信以外でもう1つ通信と取り違えていたりしませんか?
m2cha

2016/09/21 03:10

すみません、自己解決しました!
guest

0

自己解決

subActicityの
private TextView mtextView;と
mtextView.setText(result);を
コメントアウトしたらエラーが発生しないようになりました!
回答してくださった方、ありがとうございましたm(_ _)m

投稿2016/09/21 03:12

m2cha

総合スコア12

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問