1

次のコードでは、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: 私のサーバーは、署名された証明書なしで HTTPS を介して動作します

4

1 に答える 1

1

NSData.FromUrl( dataWithContentsOfURL:Objective-C では) はnull、エラーに対して返されます。

Apple のドキュメントから:

データ オブジェクトを作成できなかった場合は nil を返します。

それで、何かがうまくいかなかった...

PS: 私のサーバーは、署名された証明書なしで HTTPS を介して動作します

疑わしい。自己署名証明書を持っている可能性があります (または、サーバーが満足していないはずです)。ともかく...

URL を試すときに (iPhone/iPad から) Safari がサイトについて警告する場合、そのサイトは問題が発生したカテゴリに分類され、null取得する値は正常です。

HTTP: を試して、他の何か (ネットワークの問題など) に関係していないことを確認してください。

*本当に信頼されていない SSL サーバーを使用したい場合は、.NET API などを使用できますWebClient

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

それだけで例外 (信頼されていない SSL サーバー) が発生しますが、IMO は単にnull.

次に、信頼できない証明書を保証する必要があります。それを行うにはいくつかの異なる方法があります(他の方法よりもはるかに優れているものもあります)。それらの(ソース付きの)コードのかなり完全なリストは、この記事にあります。

于 2012-08-30T13:55:26.303 に答える