【问题标题】:curl instead of file_get_contents with contextcurl 而不是带有上下文的 file_get_contents
【发布时间】:2017-04-07 14:14:37
【问题描述】:

我想用 curl (sipgate voip account) 替换 file_get_contents ,但每次试用都不起作用。

版本 mit file_get_contents:

    $requestParameter = array(
    'RemoteUri' => sprintf('sip:%s@sipgate.de', $remoteUri),
    'LocalUri' => sprintf('sip:%s@sipgate.de', $localUri),
    'TOS' => 'voice'
);
    $auth = base64_encode(sprintf('%s:%s', $username, $password));
    $request = xmlrpc_encode_request("samurai.SessionInitiate", $requestParameter);
    $context = stream_context_create(
    array('http' => array(
        'method' => "POST",
        'header' => sprintf("Content-Type: text/xml\r\nAuthorization: Basic %s)", $auth),
        'content' => $request
    ))
);
    file_get_contents("https://api.sipgate.net/RPC2", false, $context);

最新的 curl 试用

    $requestParameter = array(
    'RemoteUri' => sprintf('sip:%s@sipgate.de', $remoteUri),
    'LocalUri' => sprintf('sip:%s@sipgate.de', $localUri),
    'TOS' => 'voice'
);
    $auth = base64_encode(sprintf('%s:%s', $username, $password));
    $request = xmlrpc_encode_request("samurai.SessionInitiate", $requestParameter);
    $context = stream_context_create(
    array('http' => array(
        'method' => "POST",
        'header' => sprintf("Content-Type: text/xml\r\nAuthorization: Basic %s)", $auth),
        'content' => $request
    ))
);
    $url = 'https://api.sipgate.net/RPC2';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $context);
    curl_exec($curl);
    curl_close($curl);

    $requestParameter = array(
    'RemoteUri' => sprintf('sip:%s@sipgate.de', $remoteUri),
    'LocalUri' => sprintf('sip:%s@sipgate.de', $localUri),
    'TOS' => 'voice'
);
    $auth = base64_encode(sprintf('%s:%s', $username, $password));
    $request = xmlrpc_encode_request("samurai.SessionInitiate", $requestParameter);

    $url = 'https://api.sipgate.net/RPC2';
    $curl = curl_init($url);
    curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
    curl_setopt($curl, CURLOPT_USERPWD, $auth);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($curl, CURLOPT_POST, 1);
    curl_setopt($curl, CURLOPT_POSTFIELDS, $request);
    curl_exec($curl);
    curl_close($curl);

有人对我有什么想法吗? 谢谢,spf

【问题讨论】:

  • PHP 错误日志中有什么内容?
  • CURLOPT_POSTFIELDS 接受 URL 查询格式。见stackoverflow.com/questions/5224790/…
  • 不幸的是,我的错误日志是空的。也许URL的日志有条目,但我不知道。
  • 我用 http_build_query() 尝试了第一个版本,现在错误日志有一个条目:PHP 警告:http_build_query(): Parameter 1 expected to be Array or Object。

标签: php curl file-get-contents


【解决方案1】:

两个版本都出现上述错误

$requestParameter = array(
'RemoteUri' => sprintf('sip:%s@sipgate.de', $remoteUri),
'LocalUri' => sprintf('sip:%s@sipgate.de', $localUri),
'TOS' => 'voice'
);
$auth = base64_encode(sprintf('%s:%s', $username, $password));
$request = xmlrpc_encode_request("samurai.SessionInitiate", $requestParameter);
$context = stream_context_create(
array('http' => array(
    'method' => "POST",
    'header' => sprintf("Content-Type: text/xml\r\nAuthorization: Basic %s)", $auth),
    'content' => $request
    ))
);
$data = http_build_query($context);
$url = 'https://api.sipgate.net/RPC2';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_exec($curl);
curl_close($curl);

$requestParameter = array(
'RemoteUri' => sprintf('sip:%s@sipgate.de', $remoteUri),
'LocalUri' => sprintf('sip:%s@sipgate.de', $localUri),
'TOS' => 'voice'
);
$auth = base64_encode(sprintf('%s:%s', $username, $password));
$request = xmlrpc_encode_request("samurai.SessionInitiate", $requestParameter);

$data = http_build_query($request);
$url = 'https://api.sipgate.net/RPC2';
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($curl, CURLOPT_USERPWD, $auth);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_exec($curl);
curl_close($curl);

【讨论】:

    猜你喜欢
    • 2012-01-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-13
    • 2016-06-23
    • 1970-01-01
    • 1970-01-01
    • 2014-12-31
    • 2018-02-01
    相关资源
    最近更新 更多