ios側からNSURLSession,NSMutableURLRequestを使って送られてくるjson形式のデータをphpを使って取得したい。する質問をすることでしか得られない、回答やアドバイスがある。15分調べてもわからないことは、質問しよう!質問するただいまの回答率89.64%トップJavaに関する質問JavaiOSAPIJSONTomcatJavaScriptを有効にしてくださいios側からNSURLSession,NSMutableURLRequestを使って送られてくるjson形式のデータをphpを使って取得したい。46ios側からNSULssesionで送られてくるjson形式のデータをphpを使って取得がしたい。phpで処理しているのは見かけるんですがjavaでできるのかな?と下記のソースコードでjsonを取得しようとしているのですが、おそらくios側でキーを設定していないために取得ができません。キーの設定はどうすればよいのでしょうか?キーは設定できないのでしょうか?説明不足でしたので補足いたします-2016/06/16具体的に以下のios(Objective-c)とphp,javaのソースコードで実行しています。進展としまして、php,javaともにios側に固定値を返すことができたのでURLが間違っている事やサーバー側の問題とは考えにくい状況なのです。(初心者なので絶対とは言い切れませんが...)それとgoogleのアプリ(?)のpostmanを使用すると、php,javaともにきれいに値が取れます。javaはあきらめてphpにします。そこでphpのほうでもう一度質問させていただきます。phpの詳しいソースも掲載いたしました。お願いします発生している問題・エラーメッセージなぜjsonの値が取れないのか検討が付かない状況です。先輩方はコレと同じ状況で取得ができているため、前例はあるといっています。json_encode($rArray);exit();}?>試したことなのでphpに乗り換えて試していたのですがやはりうまくいきませんでした。php://inputの周りが把握仕切れていません。php5phpの場所ですが、同一PCではなく別PCにApach2.4を立ててその上において参照をしています。叩き方は[例:)http://255.255.255.255/input2.php]のように叩いています。PHPのversionは5です。"hage"}が帰ってきます。2のソースで行うとnullが帰ってきます。3のソースで行うとnullが帰ってきます。"hallo"}です。今はPHP側でiosから送られてきたデータをそのまま返す形にしています。うまくいかなかった理由クエリ文字に変換してNSDataに格納し送ってみたもののnullが返ってきました。実機はiphone5sのios7.0でした。"hello"}]上記URLの返信を受けてやったこと。<-もともとなっていました。<-今から試してみます。attachmentクリップ0気になる質問をクリップするクリップした質問は、後からいつでもマイページで確認できます。クリップした質問に回答があった際、通知やメールを受け取ることができます。自分も答えを知りたい質問者以外のユーザにも役立つ評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。質問の評価を上げたことを取り消します低評価-評価を下げられる数の上限に達しました評価を下げることができません1日5回まで評価を下げられます1日に1ユーザに対して2回まで評価を下げられます質問の評価を下げるteratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。コメントをしてください。送信する質問の評価を下げる機能の利用条件この機能を利用するためには、以下の事項を行う必要があります。編集ちなみにios側のdataの中身は改行を除けばmasaya_ohashiさんが予想していた通りのものを送っていました。ちなみにios側のdataの中身は改行を除けばmasaya_ohashiさんが予想していた通りのものを送っていました。16:41「それとgoogleのアプリ(?)のpostmanを使用すると、php,javaともにきれいに値が取れます。」この一文ですが、ChromeのPostmanを使ってのテストですよね?今のソース1や2に、Postmanを使って「{"loginID":"yamada","password":"hello"}」というjsonを送るとどう返ってきますか?「それとgoogleのアプリ(?)のpostmanを使用すると、php,javaともにきれいに値が取れます。17:02PHPについてはhtdocsをちゃんと参照しています。postmanについては質問部分に貼り付けました。PHPについてはhtdocsをちゃんと参照しています。postmanについては質問部分に貼り付けました。POSTは内部的にデータが送られるものと認識していたのですが...」はい、その認識で正しいです。GETでURLの後ろにくっつけるのも、POSTボディにクエリ文字列を入れるのも、サーバ側では普通どちらもリクエストとして解析されます。はい、その認識で正しいです。GETでURLの後ろにくっつけるのも、POSTボディにクエリ文字列を入れるのも、サーバ側では普通どちらもリクエストとして解析されます。17:08詳しいご解答ありがとうございます。解析の箇所までは知りませんでした。ありがとうございます。詳しいご解答ありがとうございます。解析の箇所までは知りませんでした。ありがとうございます。実機はiphone5sのios7.0でした。両方だめでした両方です。実機はiphone5sのios7.0でした。17:44回答に追記したテストを行ってみてください。iOSが悪いのかサーバが悪いのかわかるはずです。回答に追記したテストを行ってみてください。iOSが悪いのかサーバが悪いのかわかるはずです。10:12すみません、お待たせしました。上記のような形で返ってきたのですが...コレはおそらくサーバ側がいけないのですよね?すみません、お待たせしました。10:37見たところ、iOSからのjson送信は正しいということになりますので、サーバ側の受信がおかしいことになります。「上記URLの返信を受けてやったこと。」に以下1のphp文とありますが、php://inputは一回読み込んだら中身空っぽになるので出来ないと思いますよ?(サーバのバージョンや設定によっては開き直せば読み込めるものもあるそうですが)http://php.net/manual/ja/wrappers.php.php見たところ、iOSからのjson送信は正しいということになりますので、サーバ側の受信がおかしいことになります。「上記URLの返信を受けてやったこと。10:43申し訳ありません。if文から下の行をということです。言葉足らずですみません。if文から下の行をということです。言葉足らずですみません。10:44そしてここまでお付き合いしていただいて申し訳ないんですが、なぜかできました。詳しいことはアンサーのほうに乗せます。ありがとうございました。ここまでお付き合いしていただいて申し訳ないんですが、なぜかできました。詳しいことはアンサーのほうに乗せます。ありがとうございました。件sort評価が高い順sort新着順sort古い順linkcheckベストアンサー+3iOSからサーバへ送信するデータはNSURLSessionではなくNSMutableURLRequestで決まっています。あなたの「iOSで送信しているコード部」が質問文にないので指摘しようがありません。jsonデータを送るなら、NSMutableURLRequestはPOSTメソッドが望ましいでしょう。POSTメソッドであれば、NSMutableURLRequestのsetHTTPBodyにクエリ文字列を渡すことでサーバへデータを渡せます。setHttpBodyで渡すべきクエリ文字列は、Javaで受け取るコードを変えないのであれば以下のような形になるはずです。質問文のコードが追加されたので指摘を追記します。request.getParameter("json")このServletRequest#getParameterは、特定のルールに基づいたデータを解析してデータを取得しています。その特定のルールというのがクエリ文字列と呼ばれるものです。クエリ文字列はXXX=YYYという、イコールで結ばれた「名前」と「値」です。XXX=YYY&AAA=BBBといった文字列を、URLで見たことがありませんか?で、上記コードに戻りますが、これはクエリ文字列がjson=XXXXXXXXXXXだった時にXXXXXXXXXXXを受け取る処理です。あなたがiOSから送るPOSTデータはjson=XXXXXXXXXXXという形でなければなりません。ここであなたのiOSのコードを見てみましょう。error:nil];ここで得られるdataにはどのような文字列が格納されているか?iOSの環境が手元にないので確認できませんが、こんな文字列になっているでしょう。[{"loginID":"yamada","password":"hello"}]そして、この文字列をそのままsetHTTPBodyで送信データとして格納しています。これはクエリ文字列の形式を保っていません。あるべき送信データの形はこうです。json=[{"loginID":"yamada","password":"hello"}]そして、クエリ文字列の「値」の部分はURLエンコードされている必要があるため、json=%5B%7B%22loginID%22%3A%22yamada%22%2C%22password%22%3A%22hello%22%7D%5Dこうなります。最終的にNSDataに上記文字列が入っていればJavaのgetParameterで受け取れるはずです。私が教えられるのはここまでです。iOSでURLEncodeする方法は自分で調べてみてください。動作テストhttps://posttestserver.com/以下のURLにPOSTを行うと、サーバで送られたデータのログが保存され、それを参照することができます。http://posttestserver.com/post.php接続先URLをこのURLに変えてみてアクセスしてみてください。レスポンスに「どこのURLに保存した」といった旨の記載があるので、Xcode上でレスポンスを解析して、該当URLへアクセスしてみてください。念のため伝えておきますが、上記ツールに送信するデータは!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!絶対に本当のパスワードやIDを送信してはいけません。!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!このツールに限ったことではないですが、「自身の管理の外のWebツール」には絶対にセキュリティ情報や漏れてほしくない情報をPOSTしてはいけません。どんなふうに悪用されても責任は取れません。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。10:09ご解答ありがとうございます。ご指摘の部分を修正、追加いたしました。お手数ではございますが、ご確認していただければ幸いです。ご解答ありがとうございます。ご指摘の部分を修正、追加いたしました。お手数ではございますが、ご確認していただければ幸いです。11:07ご解答ありがとうございます。調整してみます!ご解答ありがとうございます。回答していただいた内容で試してみたんですが、どうにもうまくいきませんでした。javaで受け取るのはあきらめようと思います。回答していただいたのに申し訳ございません。ありがとうございました。回答していただいた内容で試してみたんですが、どうにもうまくいきませんでした。javaで受け取るのはあきらめようと思います。回答していただいたのに申し訳ございません。ありがとうございました。18:40ご指摘ありがとうございます。試行錯誤してみたのですが、レスポンスからURLが取り出せません。ステータスコードは取り出せて200が帰ってきたのですが...どの様に取り出せばいいのでしょうか?申し訳ありませんがご回答の程お願いいたします。ご指摘ありがとうございます。試行錯誤してみたのですが、レスポンスからURLが取り出せません。申し訳ありませんがご回答の程お願いいたします。18:44delegateのdidReceiveDataにdataとして渡されたデータを文字列でコンソールにでも出力してみてもらえますか?ツールのレスポンスはただの文字列なのでNSStringにでも変換してみてください。私がテストしたときはこんなレスポンスでした。long.delegateのdidReceiveDataにdataとして渡されたデータを文字列でコンソールにでも出力してみてもらえますか?ツールのレスポンスはただの文字列なのでNSStringにでも変換してみてください。私がテストしたときはこんなレスポンスでした。forHTTPHeaderField:@"Accept"];こういう風にしているのが目に付きました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。編集ありがとうございます。ありがとうございます。10:14上記の二文を追加しても結果は変わりませんでした...ご解答ありがとうございました。ご解答ありがとうございました。キャンセル完了するlink0なぜかわかりませんが、解決いたしました。わから(ryご解答してくださった皆さん、本当にありがとうございました。ご迷惑をおかけしました。ありがとうございました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。11:07一応動くようにはなったんで、自己解決を載せさせていただいたのですが、原因がわからないのはもやもやするので、何かわかる方がいらっしゃれば回答いただけると幸いです。一応動くようにはなったんで、自己解決を載せさせていただいたのですが、原因がわからないのはもやもやするので、何かわかる方がいらっしゃれば回答いただけると幸いです。11:10時間があるなら原因を特定しておいた方がいいですよ。時間があるなら原因を特定しておいた方がいいですよ。11:18コメントありがとうございます。今自分なりに調べています!コメントありがとうございます。11:27あー、コメントが入れ違いになってしまいました。試したことを一つ一つ元に戻してみれば分かるような気もしますが、複合要因だと難しいですね。あー、コメントが入れ違いになってしまいました。試したことを一つ一つ元に戻してみれば分かるような気もしますが、複合要因だと難しいですね。キャンセル完了するlink0なぜかわかりませんが、解決いたしました。わから(ry結果がおそらく判明いたしました。ありますが、ios側のコードの不備でした。送ったデータを受け取る場合と、もともと向こう側にあるデータをもらってくるコードは違うらしく、自分達はひたすらに向こうがわにあるデータを見ていたようです。ご解答してくださった皆さん、本当にありがとうございました。ご迷惑をおかけしました。ありがとうございました。評価が高い回答ほどページの上位に表示されます。remove低評価0回答の評価を下げる下記のような回答は推奨されていません。評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。思考するエンジニアのためのQ&Aサイト「teratail」について詳しく知る閉じるトップJavaに関する質問ios側からNSURLSession,NSMutableURLRequestを使って送られてくるjson形式のデータをphpを使って取得したい。頂いたご意見への回答は行っておりません。