使用php调用webservice

时间:2011-01-21 16:29:32

标签: java php webservice-client

我是PHP的新手,想要编写一段可以调用Web服务的代码片段。 我有正确的java等效代码。

HttpClient client=new HttpClient();
GetMethod method=new GetMethod(URL);
method.addRequestHeader("test1","test1");
String statusCode=client.executeMethod();
if (statusCode != HttpStatus.SC_OK) {
       System.err.println("Method failed: " + method.getStatusLine());
}
// Read the response body.
byte[] responseBody = method.getResponseBody();
// Deal with the response.
// Use caution: ensure correct character encoding and is not binary data
System.out.println(new String(responseBody));

3 个答案:

答案 0 :(得分:0)

你应该使用一些webservice专用方法,这会更容易。例如,如果您的Web服务是SOAP服务:http://php.net/manual/fr/book.soap.php或XML-RPC:http://www.php.net/manual/en/book.xmlrpc.php

答案 1 :(得分:0)

在php中查看httprequest-send,这可以帮助您开始构建正确的请求。

http://php.net/manual/en/function.httprequest-send.php

答案 2 :(得分:0)

有很多不同的方法可以做到。

如果您只是尝试发送一个简单的GET请求,file_get_contents将正常工作。 (注意:您也可以使用file_get_contentsstream_context_create一起执行POST请求,但还有其他方法可以找到更好的方式)

示例:

$response = file_get_contents("http://www.example.com/webservice?foo=bar&baz=1");

另一种方法是使用cURL。这可能并非在所有系统上都可用(但应该最多)。以下是使用curl的POST请求示例:

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'http://www.example.com/webservice');
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query(array('foo'=>'bar','baz'=>1)));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
$result = curl_exec($ch);

或者,另一种方法是使用PEAR包HTTP_Request2。这将适用于所有系统,并且可以是一种很好的方法。有关更多信息和示例,请参阅manual page