Php Azure'中的绝对HTTP请求URL;s服务巴士

Php Azure'中的绝对HTTP请求URL;s服务巴士,php,azure,servicebus,Php,Azure,Servicebus,我正在尝试使用PHP建立与Azure服务总线的基本连接,但无法使其正常工作。我得到一个错误: 1: HTTP_Request2 needs an absolute HTTP(S) request URL, 'sb://mynamespace.servicebus.windows.net/myqueue/messages' given 这是我现在尝试运行的代码: <?php require_once '../vendor/autoload.php'; use Window

我正在尝试使用PHP建立与Azure服务总线的基本连接,但无法使其正常工作。我得到一个错误:

1: HTTP_Request2 needs an absolute HTTP(S) request URL, 'sb://mynamespace.servicebus.windows.net/myqueue/messages' given
这是我现在尝试运行的代码:

<?php
    require_once '../vendor/autoload.php';

    use WindowsAzure\Common\ServicesBuilder;
    use WindowsAzure\Common\ServiceException;
    use WindowsAzure\ServiceBus\Models\BrokeredMessage;

    // Create Service Bus REST proxy.
    $connectionString = "Endpoint=sb://mynamespace.servicebus.windows.net/;SharedSecretIssuer=owner;SharedSecretValue=[MyVal]";
    $serviceBusRestProxy = ServicesBuilder::getInstance()->createServiceBusService($connectionString);

    try {
        // Create message.
        $message = new BrokeredMessage();
        $message->setBody("my message");

        // Send message.
        $serviceBusRestProxy->sendQueueMessage("myqueue", $message); // this is the line that causes the error
    }
    catch(Exception $e){
        // Handle exception based on error codes and messages.
        // Error codes and messages are here: 
        // http://msdn.microsoft.com/library/windowsazure/hh780775
        $code = $e->getCode();
        $error_message = $e->getMessage();
        echo $code.": ".$error_message."<br />";
    }
?>

我不明白这是怎么回事。有人知道我能做些什么来防止此错误吗?

根据评论,您似乎收到此错误,因为您使用的是较旧的方式连接到Azure Service Bus。请使用可从Azure Portal获得的基于
共享访问签名的连接字符串。应采用以下格式:

$connectionString = "Endpoint=<namespacename>.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<your_key_from_the_portal>";
$connectionString=“Endpoint=.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=”;
从评论中:

嗨,马丁,谢谢你的反馈。你是对的,连接是正确的 本例中的字符串使用旧的ACS格式,而门户 生成使用较新的共享访问签名令牌的字符串(请参阅 …了解更多信息)。我会得到这个 主题尽快更新

您应该能够从中替换新的连接字符串 入口。确保格式正确。应该是 差不多

$connectionString= “Endpoint=.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=”

根据评论,您似乎收到了此错误,因为您正在使用较旧的方式连接到Azure Service Bus。请使用可从Azure Portal获得的基于
共享访问签名的连接字符串。应采用以下格式:

$connectionString = "Endpoint=<namespacename>.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=<your_key_from_the_portal>";
$connectionString=“Endpoint=.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=”;
从评论中:

嗨,马丁,谢谢你的反馈。你是对的,连接是正确的 本例中的字符串使用旧的ACS格式,而门户 生成使用较新的共享访问签名令牌的字符串(请参阅 …了解更多信息)。我会得到这个 主题尽快更新

您应该能够从中替换新的连接字符串 入口。确保格式正确。应该是 差不多

$connectionString= “Endpoint=.servicebus.windows.net;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=”


在PHPSDK中这并不是错误的。目前,Azure SDK for PHP使用ACS命名空间实现服务总线。但默认情况下,门户和Powershell在SAS命名空间中创建服务总线

要使用Azure SDK for PHP处理服务总线,您需要在ACS命名空间中创建服务总线服务器。有关更多信息,请参阅

此外,从最后一段,我们可以看到:

ACS仍然在服务总线中得到充分支持,并将在可预见的未来得到支持

在ACS命名空间中创建服务总线后,您可以在classic portal中找到它


同时,微软并没有说使用connectionstring表单classic portal是不可取的。

这在PHP SDK中并没有错。目前,Azure SDK for PHP使用ACS命名空间实现服务总线。但默认情况下,门户和Powershell在SAS命名空间中创建服务总线

要使用Azure SDK for PHP处理服务总线,您需要在ACS命名空间中创建服务总线服务器。有关更多信息,请参阅

此外,从最后一段,我们可以看到:

ACS仍然在服务总线中得到充分支持,并将在可预见的未来得到支持

在ACS命名空间中创建服务总线后,您可以在classic portal中找到它


同时,微软并没有说使用connectionstring表单classic portal是不推荐的。

谢谢您的回复!我认为使用经典门户中的connectionstring是不可取的。该解决方案也不起作用,因为服务生成器无法从servicebus获取实例。当使用通过PowerShell创建名称空间获得的connectionstring时,可以获取实例,但问题是当我尝试发送它时。此代码实际上来自此示例。:)所以我的结论是php代码是错误的。我错了吗?谢谢你的回复!我认为使用经典门户中的connectionstring是不可取的。该解决方案也不起作用,因为服务生成器无法从servicebus获取实例。当使用通过PowerShell创建名称空间获得的connectionstring时,可以获取实例,但问题是当我尝试发送它时。此代码实际上来自此示例。:)所以我的结论是php代码是错误的。我错了吗?