Unity
proxy
mBaas

プロキシサーバーを使用環境の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