2015-05-20 6 views
2

Я пытаюсь получить доступ к веб-сервису через 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 и сообщение об ошибке. Я чувствую, что получаю сообщение об ошибке, если служба не принимает вызов?

+0

Вы попробовали использовать какой-либо инструмент для сравнения веб-запросов? Например. http://www.telerik.com/fiddler – ChrFin

+0

@ChrFin Я на самом деле просто попробовал это в Fiddler и вызов файла C# show_thumbnail.aspx (который делает вызов этой услуги) с правильными данными представляет мне нужное изображение. Редактирование: реализовано, что тогда учетные данные действительны, так как вызов выполняется из C#. Не знаете, как я называю SOAP-сервис в Fiddler? – Magnetize

+0

Сделайте вызов один раз с помощью C# и один раз с PHP, а затем сравните фактические запросы, отправленные по проводу ... – ChrFin

ответ

0

Не удалось решить эту проблему со старым веб-сервисом, поэтому я закончил создание нового HttpHandler, выполнив то же самое, что и старая служба. Oh well ...

 Смежные вопросы

  • Нет связанных вопросов^_^