【Unity×mBaaS】プロキシサーバーを使用環境のmBaaS接続方法
- Unityでニフティクラウドmobile backend(通称:mBaaS)を使ってUnityで開発を始めたい人向けのドキュメントです。
- 環境:Window7, Windows版Unity
- 条件:インターネント接続のLANにプロキシサーバーを使用する場合
事前準備のお願い
- 事前にニフティクラウドmobil backendの登録とアプリの新規作成をお願いします。
1.環境変数設定
- コントロールパネルを開く
- システムを開く
- システムの詳細設定タブを開く
- 環境変数をクリック
- ユーザー環境変数に以下を追加(値:プロキシサーバー情報)
ユーザー環境変数欄
変数名:http_proxy
変数値:http://アドレス:ポート
変数名:https_proxy
変数値:http://アドレス:ポート
※変数名:大文字・小文字は関係ありません。
※https_proxy追加は影響ありませんが、一応設定する。
2.NCMBConnection.csのメソッド(_returnRequest ())最後に下記を追加
- 場所:Unity Project名\Assets\NCMB\Script\NCMBConnection.cs
追加前
NCMBConnection.cs
internal HttpWebRequest _returnRequest ()
{
<省略>
req.Headers.Add (HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, "*");
return req;
}
追加後
NCMBConnection.cs
internal HttpWebRequest _returnRequest ()
{
<省略>
req.Headers.Add (HEADER_ACCESS_CONTROL_ALLOW_ORIGIN, "*");
//UNITYの実行のみ(アプリビルド以外)利用する為Define使って分ける
#if UNITY_EDITOR
//特殊なプロキシ設定追加開始
WebProxy myProxy = new WebProxy();
//環境変数HTTP_Proxy値を取得・設定する
myProxy = (WebProxy)req.Proxy;
//ユーザー認証値を設定する
myProxy.Credentials = new System.Net.NetworkCredential(Windowユーザー名, Windowパスワード);
req.Proxy = myProxy;
//特殊なプロキシ設定追加終了
#endif
return req;
}
環境変数を読み込めない場合
NCMBConnection.cs
#if UNITY_EDITOR
// Platform (Mac)の場合下記を利用
//特殊なプロキシ設定追加開始
WebProxy myProxy = new WebProxy();
//HTTP_Proxy値を直接設定する
Uri proxyUri = new Uri("http://ユーザー名:パスワード@プロキシのサーバアドレス:ポート");
myProxy.Address = proxyUri;
//ユーザー認証値を設定する
myProxy.Credentials = new System.Net.NetworkCredential(ユーザー名, パスワード);
req.Proxy = myProxy;
//特殊なプロキシ設定追加終了
#endif
3.Unityからの実行する
#正常の場合
ログ内容
【StatusCode】:201
【Error】:
#※下記のThe request timed outエラー発生の場合Tip
エラー内容
【StatusCode】:0
【Error】:NCMB.NCMBException: The request timed out
<発生について>
- 理由:環境変数(http_proxy)が存在しない場合発生します。
- 対案:環境変数(http_proxy)、変数値を追加する。
#※下記のProxyNameResolutionFailureエラー発生の場合Tip
エラー内容
【StatusCode】:0
【Error】:NCMB.NCMBException: Error: ProxyNameResolutionFailure
<発生について>
#※下記のSecureChannelFailureエラー発生の場合Tip
エラー内容
【StatusCode】:0
【Error】:NCMB.NCMBException: Error getting response stream (The remote server returned a 407 status code.): SecureChannelFailure
<発生について>
- 理由:Windowユーザー名, Windowパスワードが正しくない場合発生します。
- 対案:Windowユーザー名, Windowパスワードが正しい値を設定する。(NCMBConnection.cs)
#※下記のsignatureエラー発生の場合Tip
エラー内容
【StatusCode】:403
【Error】:NCMB.NCMBException: Unauthorized operations for signature.
【ResponseData】:{"code":"E403002","error":"Unauthorized operations for signature."}
<発生について>