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

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

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

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

Android

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

Q&A

2回答

4883閲覧

Android HttpURLConnection POST送信

imakaradesuyo

総合スコア7

POST

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

Android

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

0グッド

0クリップ

投稿2016/01/05 05:56

以前にもご質問させていただきました。
https://teratail.com/questions/23043

解決ができておらず、再度投稿させていただきました。

lang

1protected Void doInBackground(Void... params) { 2 SharedPreferences sp = getSharedPreferences(PREFERENCES_FILE_NAME, MODE_PRIVATE); 3 4 try { 5 URL url = new URL("http://hogehoge:10101/user"); 6 conn = (HttpURLConnection) url.openConnection(); 7 conn.setReadTimeout(10000); 8 conn.setConnectTimeout(20000); 9 conn.setRequestMethod("POST"); 10 conn.setDoInput(true); 11 conn.setDoOutput(true); 12 conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); 13 conn.setFixedLengthStreamingMode(param.getBytes().length); 14 conn.setUseCaches(false); 15 conn.connect(); 16 17 Uri.Builder builder = new Uri.Builder(); 18 builder.appendQueryParameter("nama", "てすと"); 19 builder.appendQueryParameter("kana", "テスト"); 20 21 String query = builder.build().getEncodedQuery(); 22 23 // データを送信する 24 OutputStream os = conn.getOutputStream(); 25 BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 26 writer.write(param); 27 writer.flush(); 28 writer.close(); 29 os.close(); 30 31 int status = conn.getResponseCode(); 32 33 switch (status) { 34 case HttpURLConnection.HTTP_OK: 35 is = conn.getInputStream(); 36 BufferedReader reader = new BufferedReader(new InputStreamReader(is)); 37 38 String httpSource = new String(); 39 String str; 40 while (null != (str = reader.readLine())) { 41 httpSource = httpSource + str; 42 } 43 44 is.close(); 45 break; 46 case HttpURLConnection.HTTP_UNAUTHORIZED: 47 break; 48 default: 49 break; 50 } 51 } catch (Exception e) { 52 e.printStackTrace(); 53 } finally { 54 try { 55 if (reader != null) { 56 reader.close(); 57 } 58 if (os != null) { 59 os.close(); 60 } 61 if (conn != null) { 62 conn.disconnect(); 63 } 64 } catch (IOException e) { 65 e.printStackTrace(); 66 } 67 } 68 69 return null; 70 }

と記述しております。

lang

1$name = $_REQUEST['name']; 2$kana = $_REQUEST['kana'];

としております。
conn.setRequestMethod("POST");

conn.setRequestMethod("GET");
にするとPHP側で値を受け取ることができるのですが、POSTのままだとPHP側で受け取ることができません。

しかし、getResponseCodeは200です。

POSTでもPHPで値を受け取る方法がお分かりのかたがいらっしゃいましたらご教示お願いいたします。

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

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

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

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

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

guest

回答2

0

今まさに私もここで躓き。。。悩んでおります。。。

投稿2020/01/15 06:36

karetama

総合スコア10

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

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

0

直接の解答では無いですが、コメント欄では記載し難いので、回答欄で失礼致します。

ちょっと下記の説明をご確認ください。

コア php.ini ディレクティブに関する説明

variables_order string
EGPCS (Environment (環境変数)、 Get、Post、 Cookie (クッキー)、そして Server) 変数のパースの順番を設定します。例えば variables_order を "SP" に設定すると、PHP は superglobals $_SERVER および $_POST を作成しますが、 $_ENV、$_GET および $_COOKIE は作成しません。"" に設定すると、一切 superglobals を設定しません。

variables_order の設定ってどうなっているでしょうか?
念のため、確認してみることをおすすめ致します。

投稿2016/01/05 06:21

pi-chan

総合スコア5936

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

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

imakaradesuyo

2016/01/05 06:30

ご回答有難う御座います。 設定の確認をしたところ、GPCSに設定されております。 サーバはさくらのクラウドを使用しております。
pi-chan

2016/01/05 07:37

variables_order は問題無さそうですね。ところで PHP5.3.0 以降、request_order というディレクティブも導入されたそうですが、どんな設定になっていますか? 未設定なら variables_order に沿った挙動になるようですが、もし設定されているとそちらが優先されるようです。
imakaradesuyo

2016/01/05 08:04

request_orderも確認したところ、GPになっておりました。 大丈夫そうでしょうか? それと一つ気になったのですが、 JAVAで conn.setRequestMethod("POST"); でPHPに送信しているが、 PHP側で $_SERVER['REQUEST_METHOD'] で取得してみるとGETになっています。 しかし、$_GETでdumpしても中身は空になっています。 これってなにか関係ありますでしょうか?
luckyclock

2016/03/04 01:28

2か月ほど経ちましたが解決しましたでしょうか? 実は同じ問題にぶつかっています。 解決していましたら解決方法の記入をお願いしたいです。
luckyclock

2016/03/04 13:14

私の場合はなんとか解決しましたので一応書いておきます。 http://blog.sarabande.jp/post/102360906403 上記のサイトを参考に os.close();の後に InputStream in = conn.getInputStream(); を実行したらサーバー上のDBにうまく書き込むことができました。 しかしながらなぜこれでうまく言った理由はよくわかりません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問