Php Azure'中的绝对HTTP请求URL;s服务巴士
我正在尝试使用PHP建立与Azure服务总线的基本连接,但无法使其正常工作。我得到一个错误: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
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代码是错误的。我错了吗?