1

私は PHP と cURL を REST API で使用しています。最初の Nest Developer API エンドポイントを cURL できますが、Firebase の URL にリダイレクトすると、Web ホストがブロックしたポート 9553 を経由します (開かれる可能性もありません)。 . 接続がタイムアウトし、「ホストに接続できませんでした」というエラーがスローされます。

私のコードは正常に動作しており、ローカル サーバーで問題なく実行できます。

cURL を初めて使用する場合、どのようなオプションがありますか? 問題は、Firebaseが使用を主張しているポートにあるようです。:80 と :443 を超えるさまざまな場所を問題なく cURL できますが、Firebase の URL だけではありません。データにアクセスするためにプロキシを介して実行する必要がありますか?

それとも、Firebase の PHP ライブラリを使用することで解決される可能性がありますか? 必要がなければ、それを使用することにあまり興味がありません.cURLはうまく機能しますが、それがどのように機能するかはわかりません。

4

2 に答える 2

1

REST でリダイレクトを回避する方法はありません。Nest のクラウド内の特定のポートとホストを指しています。

Firebase の Web ソケット クライアントの何が問題になっていますか? REST よりもパフォーマンスが高くなります。

于 2014-07-27T04:51:13.850 に答える
0

joshguerette、あなたのファイアウォールはそのポートをブロックしていますか?

これを使用して、C# コードからポートを開くことができます。

using Microsoft.TeamFoundation.Common;
private void AddPortToFirewall(int portNumber, string name) 
{
    INetFwMgr icfMgr = null;
    try
    {
        Type TicfMgr = Type.GetTypeFromProgID("HNetCfg.FwMgr");
        icfMgr = (INetFwMgr)Activator.CreateInstance(TicfMgr);
    }
    catch (Exception ex)
    {
        Debug.WriteLine("Failed in AddPortToFirewall.Activator " + portNumber.ToString() + " " + name + " " + ex.ToString());
        return;
    }

    try
    {
        INetFwProfile profile;
        INetFwOpenPort portClass;
        Type TportClass = Type.GetTypeFromProgID("HNetCfg.FWOpenPort");
        portClass = (INetFwOpenPort)Activator.CreateInstance(TportClass);

        // Get the current profile
        profile = icfMgr.LocalPolicy.CurrentProfile;

        // Set firewall enabled
        if (!profile.FirewallEnabled)
            profile.FirewallEnabled = true;

        // Set the port properties
        portClass.Scope = NET_FW_SCOPE_.NET_FW_SCOPE_ALL;
        portClass.Enabled = true;
        portClass.Name = name;
        portClass.Port = portNumber;
        portClass.Protocol = NET_FW_IP_PROTOCOL_.NET_FW_IP_PROTOCOL_TCP;

        // Add the port to the ICF Permissions List
        bool portExisted = false;
        foreach (INetFwOpenPort p in profile.GloballyOpenPorts)
        {
            if (p.Port == portNumber && p.Name == name)
            {
                portExisted = true;
                Debug.WriteLine("Windows Firewall inbound list:" + p.Port + " " + p.Name);
                break;
            }
        }

        if (!portExisted)
        {
            profile.GloballyOpenPorts.Add(portClass);
            Debug.WriteLine("ServicePort " + portNumber.ToString() + " " + name + " was added into Windows Firewall inbound list.");
        }
        else
        {
            Debug.WriteLine("ServicePort " + portNumber.ToString() + " " + name + " has already in Windows Firewall inbound list.");
        }

    }
    catch (Exception ex)
    {
        Debug.WriteLine("Failed in AddPortToFirewall " + portNumber.ToString() + " " + name + " " + ex.ToString());
    }
}
于 2014-07-28T19:46:25.770 に答える