[API]DataTest06_WWWEx、作成したSetMessageボタンを押すとエラーがでる | Unity Forum | Tech Stadium Forum

[API]DataTest06_WWW...
 
通知
すべてクリア

[API]DataTest06_WWWEx、作成したSetMessageボタンを押すとエラーがでる  

  RSS

Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
18/03/2021 10:37 am  

ManagerMainでOnClickSetMessage→SetJsonFormWWW→SetMessage→CallbackWebRequestSuccess
→MemberDataModel.DeserializeFromJsonと処理が進み、

MemberDataModelのpublic static List<MemberData> DeserializeFromJson(string sStrJson)内の
 foreach (IDictionary jsonOne in jsonList)こちらでNullReferenceExceptionが出て
なぜなのかデバッグしてみたところ、

MemberDataModelのpublic static List<MemberData> DeserializeFromJson(string sStrJson)の
sStrJsonになんだかjsonの形式ではないずらーーと長い文字列が入っており、(画像1)
MiniJsonでjsonとして認識されずにデシリアライズできていないようでした。

これはSetMessage内で webRequest.downloadHandler.textのときからこのような文字列が入っており
なにやら「~~~cake-error~~~」のような一文も見られるので、サーバーのほうに何か問題があるのかなと思うのですが、
こちら何が原因心当たりございますでしょうか?

SetMessage内では何もおかしいこと記述していないと思うのですが…

ちなみに、GetJsonFromWwwボタンやShowMemberListボタンの動作は正常に行えます。


引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
18/03/2021 10:39 am  

http://tech-sta.com/blog/forum/unity-forum/%e3%80%8capi%e3%81%ab%e3%81%a4%e3%81%84[…]exception-object-reference-not-set-to-an-instance-of-an-objec/

こちらも目を通しておりまして、
WebRequestSuccess() を実行するバージョンに切り替えてみても、
「文字列が長すぎて表示できません」のようなエラーがでてしまい、
このときも同じ謎の長ーい一文が渡されているようでした。

 


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
18/03/2021 10:40 am  

確認してみたところ、本来デシアライズは受け取ったJsonデータを扱うものですが、
今回のプロジェクトを確認したところ、データを送信するメソッドのコールバックにもデシアライズを行うCallbackWwwSuccessメソッドが指定されていました。

SetMessageを行ってもJsonファイルは返ってこないので、そこでエラーが発生したものと考えられます。

SetMessageを行ったあとのコールバックには「Debug用メッセージを表示する」「ディスプレイのメッセージを変更する」等の内容だけにし、
GetMessageを行ったあとに呼ばれるコールバックにCallbackWwwSuccessを指定しましょう。

This post was modified 4年前 by Teacher

返信引用
Student
(@student)
メンバー Moderator
結合: 4年前
投稿: 1351
18/03/2021 10:42 am  
 
こちら理解しました。
 
そもそもsetMessageでは1(成功)か0(失敗)が
echoで返ってくるだけで、getMessageのようにjsonが返ってくる構造とは根本的に違うのですね。
UnityWebRequest.downloadHandler.text自体何が格納されるのか全く分かっていませんでしたが、
UnityWebRequest.downloadHandler.textはxxxController.php
の関数でechoされた内容が格納されるもの
と考えてよいのでしょうか?
 
(SetMessageでecho "1";としていた部分をecho "[".json_encode($data)."]";とすると、ちゃんとjsonデータを返してくれたので…)


返信引用
Teacher
(@admin)
メンバー Admin
結合: 5年前
投稿: 1318
18/03/2021 10:43 am  

そうですね。echoの部分が返り値として返ってくると考えて大丈夫です。


返信引用
共有:
タイトルとURLをコピーしました