2012-08-30 83 views
1

加载图像,我不能从Zend服务器与下面的代码加载图像:无法从Zend服务器

Console.WriteLine(">" + url); 
Console.WriteLine(">" + NSUrl.FromString(url)); 
Console.WriteLine(">" + NSData.FromUrl(NSUrl.FromString(url))); // Null on this line 

看来,只有当我试图从我的服务器加载图像,任何其他来源的正常工作。这是我的Zend控制器代码:

public function getAction() 
{ 
    $file_id = (int)$this->_getParam('id'); 
    $file = $this->fileModel->getById($file_id); 

    $this->getResponse() 
     ->setHttpResponseCode(200) 
     ->setHeader('Pragma', 'public', true) 
     ->setHeader('Expires', '', true) 
     ->setHeader('Cache-Control', 'public', true) 
     ->setHeader('Cache-Control', 'max-age=3800') 
     ->setHeader('Content-type', $file->CONTENT_TYPE, true) 
     ->setHeader('Content-Length', $file->FILE_SIZE) 
     ->clearBody(); 
    $this->getResponse()->sendHeaders(); 

    echo base64_decode($file->FILEBODY); 
    exit; 
} 

图像在浏览器中显示正常。我的代码有什么问题?

PS:我的服务器工作throught HTTPS没有任何签名证书

回答

1

NSData.FromUrldataWithContentsOfURL:在Objective-C)将返回null任何错误。

从苹果文档:

返回nil如果数据对象无法创建。

所以出事了......

PS:我的服务器工作throught HTTPS没有任何签名证书

怀疑。您可能拥有自签名证书(或者您的服务器不应该很高兴)。反正...

如果在尝试您的网址,Safari浏览器时(从你的iPhone/iPad的)发出警告,您的网站,那么它落入出事了类别和null值你得到的是正常的。

您可能想尝试使用HTTP:确保它与其他内容无关(例如网络问题)。

现在,如果您* 真的想要使用不可信的SSL服务器,您可以使用一些.NET API,例如, WebClient

var wc = new WebClient(); 
byte[] data = wc.DownloadData (url); 

这都会让你一个例外(不受信任的SSL服务器),但IMO这已经不是简单的一个null更好。

接下来,您需要担保不受信任的证书。有几种不同的方法可以做到这一点(有些比其他方法更好)。我相当完整的列表(源代码)可以在article找到。