簡體   English   中英

Xcode和HTTP請求的奇怪響應

[英]Weird response with Xcode and HTTP request

我正在嘗試制作一個通過PHP Web應用程序與服務器通信的iOS應用程序。 我在Xcode中有一個方法,該方法將返回網站上的文本。 它可以與除此網站以外的所有其他網站一起使用。 當您在瀏覽器中打開它時它起作用,但是當通過應用程序發送請求時則不起作用。 (我知道有一些代碼可以使頁面刷新,這可能是導致問題的原因,但是它每次都出現,並且永遠不會出現在瀏覽器版本上)然后它只返回null。 提前致謝!

PHP文件:

<?php

require_once 'init.php';

$key =  mt_rand(100000, 999999);


$sql= "SELECT * FROM sharing_keys
WHERE unique_key LIKE $key";
$result = $con->query($sql);

if ($result->num_rows > 0) {
    // Change number
    $page = $_SERVER['PHP_SELF'];
    $sec = "1";
    header("Refresh: $sec; url=$page");
} else {
    $add = "INSERT INTO sharing_keys (unique_key)
    VALUES ($key)";

    if ($con->query($add) === TRUE) {
        echo $key;
    } else {
        echo "Error: " . $add . "<br>" . $con->error;
    }
}

if (!mysqli_query($con,$sql)) {
    die('Error: ' . mysqli_error($con));
}

?>

Xcode方法:

-(NSString *)getStringFromURL:(NSString *)url {

    NSError *error;
    NSString *stringFromFileAtURL = [[NSString alloc]
                                     initWithContentsOfURL:[NSURL URLWithString:[NSString stringWithFormat:@"%@",url]]
                                     encoding:NSUTF8StringEncoding
                                     error:&error];
    if (stringFromFileAtURL == nil) {
        // an error occurred
        NSLog(@"Error reading file at %@\n%@", url, [error localizedFailureReason]);
    }

    return stringFromFileAtURL;

}

試試這個方法:

while(true) {
    $key =  mt_rand(100000, 999999);
    $sql= "SELECT * FROM sharing_keys
           WHERE unique_key LIKE $key";
    $result = $con->query($sql);
    if ($result->num_rows > 0){
        $add = "INSERT INTO sharing_keys (unique_key)
        VALUES ($key)";
        if ($con->query($add) === TRUE) {
            echo $key;
        } else {
            echo "Error: " . $add . "<br>" . $con->error;
        }
        break;
    }else {
        //sleep for 2 seconds
        sleep(2);
    } 
}

我認為在請求過程中刷新不是一個好主意。

該邏輯將嘗試查找密鑰並在找到后退出。 如果不是,它將休眠2秒鍾,然后重試直到找到。


如果您的唯一目標是隨機選擇一行,那么您應該在查詢中進行選擇,因為只有上帝知道需要多長時間。 這是mysql服務器中的示例:

SELECT * FROM sharing_keys
ORDER BY RAND()
LIMIT 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM