Mat*_*ken 4 php google-app-engine curl urlfetch
我正在为Google App引擎创建一个应用程序,不允许使用CURL.据我所知,urlFetch是最好的选择.
我不知道我是否可以用urlFetch获得相同的结果,但如果有更多经验的人可以帮助我,我真的非常感激.
计划是将以下CURL请求转换为urlFetch.如果有人能指出我正确的方向,或提出更好的选择,我会非常感激.
public function postCall($endpoint, $post_data, $param1, $param2, $json=1, $headers=false) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL, $this->options['url'].$endpoint);
curl_setopt($ch,CURLOPT_RETURNTRANSFER, 1);
if ($headers && is_array($headers)) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
}
$post_data['req_token'] = $this->hash($param1, $param2);
curl_setopt($ch, CURLOPT_POST, count($post_data));
if (!$headers)
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post_data));
else
curl_setopt($ch,CURLOPT_POSTFIELDS, $post_data);
$this->debug('POST params: ' . json_encode($post_data));
$result = curl_exec($ch);
if ($result === false) {
$this->debug('CURL error: '.curl_error($ch));
return false;
}
$this->debug('HTTP response code' . curl_getinfo($ch, CURLINFO_HTTP_CODE));
$this->debug('POST return ' . $result);
// close connection
curl_close($ch);
if ($json)
return json_decode(utf8_encode($result), true);
else
return $result;}
Run Code Online (Sandbox Code Playgroud)
您是否看过Urlfetch文档以及关于包装器的链接PHP文章?你可以试试这个实时shell.
代码可以翻译成:
public function postCall($endpoint, $post_data, $param1, $param2, $json=1, $headers=false) {
$post_data['req_token'] = $this->hash($param1, $param2);
$this->debug('POST params: ' . json_encode($post_data));
$data = http_build_query($post_data);
$options =
array("http"=>
array(
"method" => "POST",
"content" => $post_data,
)
);
if ($headers && is_array($headers)) {
$options["http"]["header"] = $headers;
}
$context = stream_context_create($options);
$result = file_get_contents("http://app.com/path?query=update", false, $context);
if ($result === FALSE) {
$this->debug('Error: '. print_r($http_response_header));
return FALSE;
}
$this->debug('Response headers:' . print_r($http_response_header)); // To get the status code you would need to parse that response
$this->debug('POST return ' . $result);
if ($json)
return json_decode(utf8_encode($result), true);
else
return $result;
}
Run Code Online (Sandbox Code Playgroud)