PHP中的C#NetworkCredential

时间:2015-05-20 11:01:38

标签: c# php web-services soap networkcredentials

我正在尝试通过PHP访问Web服务。 webservice返回一个带有jpeg图像的字节数组,然后显示在网页上。

今天服务是通过C#调用访问的,就像这样

ImgService i = new ImgService();

凭据设置如下:

i.Credentials = new System.Net.NetworkCredential(username, password, domain);

访问webservice:

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并没有错误信息。如果服务不接受电话,我觉得我会收到错误吗?

1 个答案:

答案 0 :(得分:0)

没有设法使用旧的Web服务来解决这个问题,所以我最终创建了一个新的HttpHandler来做旧服务所做的事情。 哦,好吧......