[英]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.