以前にも同じようなものを作成してたのですが、HeartBleedへの対策の影響で旧システムが廃止されてしまいました。
公式からは新システムの使用を呼びかけていて新システムへの対応をしている最中に必要なjsonの処理で四苦八苦しています。
新システムの認証ではPOSTでjsonを送信し、それに対して結果を返してくる形式(みたい)なのですが
送信したあと、受信した際にエラーが吐かれてしまいます。それもHSPでエラーコードが表示されるのではなく、
jsonにエラーが返って来ます。どうもエラー内容で検索してもどうもよくわからない....
因みに公式が案内しているシステムは[http://wiki.vg/Authentication#Authenticate]に記載されていましたので参考にしています。
私の力では解決は困難な気がしますので(というか困難かと)、どうか皆様の力を貸してください。
ソースコードは以下の通りです
※https通信が必要なため[http://hsp.moe/#junk]さんのHTTPS対応hspinet.dllを使用しています。
#include "hspinets.as" mes "hspinetの初期化中です..." netinit mes "アドレスを https://authserver.mojang.com/ に指定します" neturl "https://authserver.mojang.com/" netheader "Content-Type: application/json" USER="" PASS="" screen mes "ユーザー名 or メールアドレス" mes "(例)notch sample@abc.dfg.com" input USER,200,23 mes "" mes "パスワード" mes "(例)123456789" input PASS,200,23 button gosub "確認する",*Cheak stop *Cheak if USER=""|PASS=""{dialog "ユーザー名かパスワードが未記入です":return} dialog "ユーザー名が「"+USER+"」\nパスワードが「"+PASS+"」\nでよろしいですか?",2,"確認をお願いします" if stat=7{return} POSTFILE="{\n\"agent\": {\n\"name\": \"Minecraft\",\n\"version\": 1\n},\n\"username\": \""+USER+"\",\n\"password\": \""+PASS+"\",\n}" netrequest_post "authenticate",POSTFILE repeat title "取得中" await 10 netexec Temp if Temp:break loop netgetv DLdata dialog ""+DLdata dialog {"以下のデータを保存しますか? 送信したJSONファイル 受信したJSONファイル"},2,"保存しますか?" if stat=6{ notesel DLdata notesave "Download.json" notesel POSTFILE notesave "POST.json" dialog {"送信したJSONファイルを「POST.json」で保存しました。 受信したJSONファイルを「Download.json」で保存しました。"} title "完了(?)" stop } stop
送信しているjsonは[http://wiki.vg/Authentication#Authenticate]を参考にしています。※
エラー内容は以下の通りです
Unexpected character
('}' (code 125))
was expecting double-quote to start field name\n
at [Source: org.eclipse.jetty.server.HttpInput@16ebd7a8; line: 8, column: 2]
(改行無しだとはみ出てしまうので一応改行しています。)