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

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

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

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

Android

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

PHP

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

Q&A

4回答

5084閲覧

Android POST 送信 PHP受け取り

imakaradesuyo

総合スコア7

POST

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

Android

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

PHP

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

0グッド

0クリップ

投稿2015/12/20 11:10

編集2015/12/21 03:34

AndroidアプリからPHPへPOST送信をおこなっているのですが、PHPで受け取りができません。

lang

1class NetworkAsyncTask extends AsyncTask<Void, Void, Void> { 2 @Override 3 protected Void doInBackground(Void... params) { 4 try { 5 URL url = new URL("http", "www.hogehoge.com", 8080, "filename"); 6 7 HttpURLConnection conn = (HttpURLConnection) url.openConnection(); 8 //HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); 9 conn.setReadTimeout(10000); 10 conn.setConnectTimeout(15000); 11 conn.setRequestMethod("POST"); 12 conn.setRequestProperty("Accept-Language", "ja"); 13 conn.setDoInput(true); 14 conn.setDoOutput(true); 15 conn.setUseCaches(false); 16 17 Uri.Builder builder = new Uri.Builder() 18 .appendQueryParameter("name", "てすと") 19 .appendQueryParameter("kana", "テスト"); 20 21 String query = builder.build().getEncodedQuery(); 22 23 OutputStream os = conn.getOutputStream(); 24 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 25 26 writer.write(query); 27 writer.flush(); 28 writer.close(); 29 os.close(); 30 conn.connect(); 31 } catch (Exception e) { 32 e.printStackTrace(); 33 } 34 return null; 35 } 36 }

name、kanaのデータをPHP側でPOSTで受け取りDBに保存する内容になります。
PHP側でデータが受け取れず、ログにも残らない状態です。

<uses-permission android:name="android.permission.INTERNET" /> も入れております。

参考サイト
http://stackoverflow.com/questions/32083883/android-outputstream-os-conn-getoutputstream-crashs-app

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

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

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

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

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

yona

2015/12/20 14:46

できませんじゃわかりません。 なにができないのか詳しく書いてください。
imakaradesuyo

2015/12/21 03:34

追記いたしました。申し訳ありません。
guest

回答4

0

php側が正しく動く時の文字列はどんなものですか?

投稿2015/12/24 10:37

yona

総合スコア18155

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

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

imakaradesuyo

2015/12/24 11:11

PHP側ではログをとっており、POSTで送信されたらアクセスのログがとれています。 しかし、$_POSTなども一緒に入れると$_POSTの中には値が入っていない状態です。 とゆーよりも、$_POSTのキーですら渡されていないといった状況です。
guest

0

「Androidがpostしている内容」と「phpが期待してる内容」が異なっている可能性はありませんか?

投稿2015/12/21 05:20

yona

総合スコア18155

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

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

imakaradesuyo

2015/12/21 06:27

$name = $_POST['name']; $kana = $_POST['kana']; としております。
yona

2015/12/21 07:13

送信しているpostの内容はそのコードで対応できるものですか?
imakaradesuyo

2015/12/24 08:27

>送信しているpostの内容はそのコードで対応できるものですか? とはどういったことでしょうか。 PHP側でのエンコードでしょうか?
yona

2015/12/24 09:12

違います。 Androidからpostする内容は下記のような文字列になります。 name= "てすと"&kana="テスト" 上記の文字列はphp側で正しく解析されますか?
imakaradesuyo

2015/12/24 09:42

すいません。 正しく受け取れていないんです。 PHP側へのアクセスはできました。 しかし、name= "てすと"&kana="テスト"がどうやっても取れません。 $_POST、$_REQUEST、$_GET全てだめでした。
yona

2015/12/24 11:45

そもそもAndroid側で正常にpostできていますか? Httpステータスコードを確認してみてください。
imakaradesuyo

2015/12/24 12:08

Httpステータスコードは200で正常に動いております。
guest

0

PHP側は問題なく動作する(ブラウザからアクセス可能なことは確認済み、など)状態なのでしょうか。

投稿2015/12/20 23:22

hyper-drums-ko

総合スコア736

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

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

imakaradesuyo

2015/12/21 03:29

PHP側は正常に動作しております。
guest

0

Java

1URL url = new URL("URL");

"URL"はリクエストしたいURLが指定されていると思ってよいですよね?

アクセスログにリクエストはのこりますか?

投稿2015/12/20 22:45

sekitaka_1214

総合スコア509

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

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

imakaradesuyo

2015/12/21 03:28

>"URL"はリクエストしたいURLが指定されていると思ってよいですよね? はい。URLは指定しております。 URL url = new URL("http", "www.hogehoge.com", "8080", "filename"); としております。 アクセスログにリクエストが残らない状態です。
sekitaka_1214

2015/12/21 12:52

いくつか切り分けをして問題がどこなのをか探したいですね。 GETでなんのパラメタも送らずにhttp://google.co.jpへアクセスして、htmlソースの取得ができるか。 できたら、自分のサーバーの何もしないhtmlに対してリクエストが到達するか。 問題なければ、phpへリクエストして受信するか。(現状失敗)
imakaradesuyo

2015/12/24 08:27

遅くなり申し訳ありません。 php側へのアクセスはできたのですが、POST、GETでパラメータを送っても値が何も入っていない状態で渡されてしまいます。 とゆーかキーが渡されていないことになってしまいます。。。
sekitaka_1214

2015/12/26 00:39

ちょっと直接の回答ではないですが、HttpURLConnectionを直接使用するとご覧のとおり結構長いコードになってしまいます。 AsyncHttpClientなどのHttp通信を簡単に記述できるライブラリもありますので、そちらの使用を検討してみるのも手かと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問