gpt4 book ai didi

php - 如何从 PHP 调用 RESTful WCF-Service

转载 作者:行者123 更新时间:2023-12-04 05:45:50 25 4
gpt4 key购买 nike

我正在尝试使用 PHP 中的 REST 向自托管 WCF 服务发送请求。
我想将对象作为 JSON 对象发送到 WCF 服务。
我还没有让它运行。
有没有人举例说明如何从 PHP 调用服务?

这是操作合约(该方法是一个 POST 方法):

[OperationContract]
[WebInvoke(Method = "POST", BodyStyle = WebMessageBodyStyle.Wrapped, RequestFormat = WebMessageFormat.Json, ResponseFormat = WebMessageFormat.Json)]
void Method1(AnObject object);

PHP 中最好的工作代码如下:
$url = "http://localhost:8000/webservice/Method1?object=$object"; 
$url1 = parse_url($url);

// extract host and path:
$host = $url1['host'];
$path = $url1['path'];
$port = $url1['port'];

// open a socket connection on port 80 - timeout: 30 sec
$fp = fsockopen($host, $port, $errno, $errstr, 30);

if($fp)
{
// send the request headers:
fputs($fp, "POST $path HTTP/1.1\r\n");
fputs($fp, "Host: $host\r\n");

fputs($fp, "Content-type: application/json \r\n");
fputs($fp, "Content-length: ". strlen($object) ."\r\n");
fputs($fp, "Connection: close\r\n\r\n");
fputs($fp, $object);
//
// $result = '';
// while(!feof($fp)) {
// // receive the results of the request
// $result .= fgets($fp, 128);
// }
}
else {
return array(
'status' => 'err',
'error' => "$errstr ($errno)"
);
}

// close the socket connection:
fclose($fp);

但是此代码不发送对象。在 Debug模式中,对象为“空”。我只是看到,它进入了方法。

最佳答案

我找到了解决我自己问题的方法:

$url = "http://localhost:1234/service/PostMethod"; 
$jsonObject = json_encode($transmitObject);

$options = array(
CURLOPT_HTTPHEADER => array(
"Content-Type:application/json; charset=utf-8",
"Content-Length:".strlen($jsonObject)));

$defaults = array(
CURLOPT_POST => 1,
CURLOPT_HEADER => 0,
CURLOPT_URL => $url,
CURLOPT_FRESH_CONNECT => 1,
CURLOPT_RETURNTRANSFER => 1,
CURLOPT_FORBID_REUSE => 1,
CURLOPT_TIMEOUT => 4,
CURLOPT_POSTFIELDS => $jsonObject
);

$ch = curl_init();
curl_setopt_array($ch, ($options + $defaults));
curl_exec($ch);
curl_close($ch);

关于php - 如何从 PHP 调用 RESTful WCF-Service,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10703060/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com