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

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

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

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

Q&A

解決済

1回答

3523閲覧

AndoroidでPOST送信時のパラメータについて

IzuShin

総合スコア68

Android

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

0グッド

0クリップ

投稿2017/04/19 06:43

編集2017/04/19 06:59

AndoroidとPHPでデータ通信をしたいと考えています。
HTTP通信はできているのですが、パラメータがうまく渡せません。

コードは下記サイトを参考にして記述しましたが、誤っている箇所がございますでしょうか?
http://qiita.com/kaikusakari/items/b1dd02803bb16956010a

PHP

1$conferenceKey = $_POST["conferenceKey"]; 2$recordValue = $_POST["recordValue"];

Andoroid

1try{ 2 urlConnection = (HttpURLConnection) new URL(url).openConnection(); 3 urlConnection.setRequestMethod("POST"); 4 urlConnection.setInstanceFollowRedirects(false); 5 urlConnection.setRequestProperty("Accept-Language", "jp"); 6 urlConnection.setDoOutput(true); 7 urlConnection.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 8 OutputStream os = urlConnection.getOutputStream(); 9 PrintStream ps = new PrintStream(os); 10 String parameterString = new String("conferenceKey='A1'&recordValue='B2'"); 11 ps.print(parameterString); 12 ps.close(); 13 BufferedReader br = new BufferedReader(new InputStreamReader(urlConnection.getInputStream(), "UTF-8")); 14 15 String line; 16 while((line = br.readLine()) != null){ 17 stringBuffer.append(line); 18 } 19}

パラメータ値には'A1','B2'といった値を渡しているつもりですが、受け取れておりません。
間違っている箇所がありましたらご指摘いただきたいです。

よろしくお願いします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

送ろうとしている文字列がJSONではないですね、application/x-www-form-urlencoded

また、HttpURLConnection#connectを呼んでいないようです。

投稿2017/04/19 07:18

yona

総合スコア18155

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

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

IzuShin

2017/04/19 07:40

yonaさん、ご指摘ありがとうございます。 以下のように書き換えました。 urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded; charset=utf-8"); また、connectも呼びました。 ですが、HTTP通信もできなくなってしまいまして…。 application/x-www-form-urlencoded に変えた事で余分な部分を消さないといけなかったりするのでしょうか? 申し訳ありませんが教えていただきたいです。
yona

2017/04/19 08:02

出来なくなったではわかりません。 具体的にどうなったのでしょうか?
IzuShin

2017/04/19 08:08

yonaさん、質問があいまいで申し訳ありません。 application/x-www-form-urlencoded に変えたところ、PHP側のログが書かれなくなってしまいました。 application/jsonに戻すと、PHP側でパラメータは受け取れていませんがログは書かれます。 application/x-www-form-urlencodedでは何か足りない設定があるのでしょうか?
yona

2017/04/19 08:17

PHP側のログ出力はどこのログですか? また、レスポンスを受け取る箇所があるのでsetDoInputもtrueにしておきましょう。
IzuShin

2017/04/19 09:06

yonaさん、ご回答ありがとうございます。 パラメータの記述が原因のようでした。 以下に書き換えたところ上手くPHP側にパラメータを渡せました。 ×:String parameterString = new String("conferenceKey='A1'&recordValue='B2'"); 〇:String parameterString = "conferenceKey=" + URLEncoder.encode("A1", "UTF-8") + "&recordValue=" + URLEncoder.encode("B2", "UTF-8"); この度は何度も質問をしてしまい申し訳ありませんでした。 ご回答、本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問