Edited at

プロキシサーバーを使用環境のmBaaS接続方法

More than 1 year has passed since last update.


【Unity×mBaaS】プロキシサーバーを使用環境のmBaaS接続方法


  • Unityでニフティクラウドmobile backend(通称:mBaaS)を使ってUnityで開発を始めたい人向けのドキュメントです。

  • 環境:Window7, Windows版Unity

  • 条件:インターネント接続のLANにプロキシサーバーを使用する場合


事前準備のお願い


1.環境変数設定


  • コントロールパネルを開く

  • システムを開く

  • システムの詳細設定タブを開く

  • 環境変数をクリック

  • ユーザー環境変数に以下を追加(値:プロキシサーバー情報)


ユーザー環境変数欄

    変数名:http_proxy

変数値:http://アドレス:ポート

変数名:https_proxy
変数値:http://アドレス:ポート

※変数名:大文字・小文字は関係ありません。
※https_proxy追加は影響ありませんが、一応設定する。


env1.png

env2.png


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】:

unitysuccess.png


※下記の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

<発生について>


  • 理由:変数値http://アドレス:ポートが正しくない場合発生します。

  • 対案:変数値http://アドレス:ポートが正しい値を設定する。


※下記の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."}

<発生について>


  • 理由:シグネチャの生成する時、キー項目を「&」で連結作成する時、空白が有るとエラーになります。

  • 対案:アプリケーションキー、クライアントキーを入力する時、文字列最後に空白がないように設定します。
    Unity_NCMBSetting.png