Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have 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
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away