簡體   English   中英

無效的JSON需要Swift iOS

[英]Invalid JSON require Swift iOS

我正在開發一個簡單的iOS Swift應用程序。 我想為我的應用創建一個登錄屏幕,該屏幕將連接到Wordpress已經存在的用戶數據庫。 我找到了一些PHP腳本和Swift代碼。

我正在嘗試發布用戶名並登錄,檢查並返回結果(isUser = true / false或1/0)

這是一個PHP腳本

<?php
// Read request parameters
$username= $_REQUEST["username"];
$password = $_REQUEST["password"];
// Store values in an array
$returnValue = array("username"=>$username, "password"=>$password);
// Send back request in JSON format
echo json_encode($returnValue);
?>

和一個Swift函數

func getPHPJson() {

    let urlPath: String = "LINK_TO_PHP_FILE?username=\(user)&password=\(pass)"
    let url: NSURL = NSURL(string: urlPath)!
    let request1: NSMutableURLRequest = NSMutableURLRequest(URL: url)

    request1.HTTPMethod = "GET"
    let queue:NSOperationQueue = NSOperationQueue()

    NSURLConnection.sendAsynchronousRequest(request1, queue: queue, completionHandler:{ (response: NSURLResponse?, data: NSData?, error: NSError?) -> Void in

    do 
    {
        if let jsonResult = try NSJSONSerialization.JSONObjectWithData(data!, options: []) as? NSDictionary 
        {
            print(jsonResult)
            //print(jsonResult["isUser"] as! Bool)
            let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
            print("raw response: \(responseString!)")
        }
    } catch let error as NSError 
    {
        print(error.localizedDescription)
        print("error")
        let responseString = NSString(data: data!, encoding: NSUTF8StringEncoding)
        print("raw response: \(responseString)")
    }
    })
}

它給了我想要的結果。

輸出值

{
    password = iosappusettest1;
    username = iosappusettest;
}
raw response: {"username":"iosappusettest","password":"iosappusettest1"}

但是當我添加功能以檢查用戶是否已注冊時-我總是收到無效的JSON

這是PHP函數

function authentication ($user, $pass){
  global $wp, $wp_rewrite, $wp_the_query, $wp_query;

  if(empty($user) || empty($pass)){
    return 0;
  } else {
    require_once('../wp-blog-header.php');
    $status = 0;
    $auth = wp_authenticate($user, $pass );
    if( is_wp_error($auth) ) {      
      $status = 0;
    } else {
      $status = 1;
    }
    return $status;
  } 
}

我相信問題是require_once函數。 在原始響應中,我得到了很多html標記和其他使JSON無效的數據。

  • 有什么方法可以清除頁面並僅在JSON輸出嗎? echo "<script> document.documentElement.innerHTML = ''; </script>"; PHP中沒有幫助我。 也許jQuery會有所幫助?
  • 也許我可以檢查用戶是否以其他方式注冊?
  • 也許我可以將結果存儲在單獨的位置或臨時文件中?
  • 也許我不應該將數據包裝在JSON中,而是用其他包裝?

因此,我需要將用戶名和密碼傳遞給PHP,並使用身份驗證功能(使用require_once )進行檢查,然后將$ status發送回iOS Swift應用ass變量。

問題得到了回答。 問題出在WP插件中,該插件重定向了該域中所有鏈接的所有未登錄用戶,因此當我調用require_once('../wp-blog-header.php'); 我總是被重定向到主頁,這就是帶有所有HTML標記的JSON文件錯誤的原因。

將響應保持在純JSON中,並保留所有html標記,因為ios端不需要它們。

暫無
暫無

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

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