Я пытаюсь получить доступ к веб-сервису через PHP. Webservice возвращает массив байтов с изображением jpeg, который затем отображается на веб-странице.C# NetworkCredential в PHP
Сегодня служба обращается с помощью C# вызов, как и
ImgService i = new ImgService();
проверке полномочий устанавливаются следующим образом:
i.Credentials = new System.Net.NetworkCredential(username, password, domain);
Доступ к веб-сервиса:
byte[] result = null;
result = i.GetThumbNail(raceId, startNum, seasonId, height, width, true);
Response.ContentType = "image/jpeg";
Response.BinaryWrite(result);
Услугу отлично работает в C#, но теперь мне нужно получить доступ к нему через PHP, и единственным изображением, которое я получаю, является «missing.jpg». Я не уверен, означает ли это, что учетные данные неверны или что-то еще не так, но я чувствую себя очень не уверенно в части учетных данных.
Это PHP код без каких-либо полномочий:
$client = new SoapClient("http://www.example.com/imgService.asmx?WSDL");
$result = $client->GetThumbNail($args['race'], $args['startnumber'], $args['year'], 0, 0, true);
$image_data = $result->GetThumbNailResult;
echo '<img src="data:image/jpeg;base64,'.base64_encode($image_data).'">';
Я также попытался с помощью вызовов, как это:
$headers = array(
'username' => 'user',
'password' => 'pass',
'domain' => 'domain'
);
$header = new SoapHeader("http://tempuri.org/", 'UserCredentials', $headers, false);
$client->__setSoapHeaders($header);
$result = $client->GetThumbNail(parameters);
Обе версии дает мне тот же missing.jpg и сообщение об ошибке. Я чувствую, что получаю сообщение об ошибке, если служба не принимает вызов?
Вы попробовали использовать какой-либо инструмент для сравнения веб-запросов? Например. http://www.telerik.com/fiddler – ChrFin
@ChrFin Я на самом деле просто попробовал это в Fiddler и вызов файла C# show_thumbnail.aspx (который делает вызов этой услуги) с правильными данными представляет мне нужное изображение. Редактирование: реализовано, что тогда учетные данные действительны, так как вызов выполняется из C#. Не знаете, как я называю SOAP-сервис в Fiddler? – Magnetize
Сделайте вызов один раз с помощью C# и один раз с PHP, а затем сравните фактические запросы, отправленные по проводу ... – ChrFin