2013-06-21 35 views
2

我熟悉iOS/Xcode開發,現在正在嘗試開發自己的Web服務。不幸的是,我正在努力將JSON字符串從iOS應用程序傳遞到PHP頁面。從iOS應用程序傳遞JSON字符串到PHP Webservice

在Xcode中,我創建類似於JSON字符串:

{"email" : "", "name" : "Test Rest",} 

我然後創建一個URL (GET)

//localhost/index.php?method=createRestaurant&json={"email" : "", "name" : "Test Rest",} 

我試圖使用NetBeans調試PHP但兩者NetBeans & iOS失敗,無論是錯誤的URL還是無效的字符錯誤,並且我猜測它是失敗的JSON字符{}。

如果我使用Chrome PostMan併發出相同的URL,它可以證明PHP正在工作/正在做我所需要的工作。

總之,在URL中包含JSON數據的最佳方式是需要在XCode中進行更改,以影響JSON編碼方式?

NSData *jsonData = [NSJSONSerialization dataWithJSONObject:myDictionary options:NSJSONWritingPrettyPrinted error:&error]; 
    jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 

在我應該使用Java的一個理想的世界,但由於速度快,環境成本等我試圖讓我的系統中使用PHP的工作。一旦解決方案完成,我將繼續將解決方案移植到Java。

感謝您的任何幫助。

回答

0

我會使用POST方法,然後在PHP腳本中打印出來進行調試。

調試輸出將是這樣的:

$ JSON = json_decode($ _ POST [ 'JSON']); print_r($ json);

0

你可以過去的數據,通過GET請求改變URL是這樣的:

//localhost/index.php?method=createRestaurant&email=emailData&name=TestData 

,或者您可以通過在POST變量POST請求發送數據。

1

一對夫婦的想法:

  1. 您的JSON是無效的。你在那裏有一個額外的逗號。用JSON Lint檢查一下。

  2. 您應該百分比轉義您的網址參數,因爲URL中不允許使用空格等字符。您可以使用stringByAddingPercentEscapesUsingEncoding。或者,如果您的字符串中可能包含其他一些無法在單個URL參數中使用的有效URL字符,則可以使用Core Foundation CFURLCreateStringByAddingPercentEscapes,這可以提供更多控制權。我使用的NSString類提供了一個簡單的界面,這個功能的CoreFoundation:

    @implementation NSString (UrlEncode) 
    
    + (NSString *)stringByAddingPercentEscapesFor:(NSString *)string 
           legalURLCharactersToBeEscaped:(NSString *)legalURLCharactersToBeEscaped 
               usingEncoding:(NSStringEncoding)encoding 
    { 
        return CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault, 
                        (CFStringRef)string, 
                        NULL, 
                        (CFStringRef)legalURLCharactersToBeEscaped, 
                        CFStringConvertNSStringEncodingToEncoding(encoding) 
                        )); 
    } 
    
    - (NSString *)stringByAddingPercentEscapesFor:(NSString *)legalURLCharactersToBeEscaped 
               usingEncoding:(NSStringEncoding)encoding 
    { 
        return [NSString stringByAddingPercentEscapesFor:self 
             legalURLCharactersToBeEscaped:legalURLCharactersToBeEscaped 
                 usingEncoding:encoding]; 
    } 
    
    - (NSString *)stringByAddingPercentEscapesForURLParameterUsingEncoding:(NSStringEncoding)encoding 
    { 
        return [NSString stringByAddingPercentEscapesFor:self 
             legalURLCharactersToBeEscaped:@";/?:@&=+$," 
                 usingEncoding:encoding]; 
    } 
    
    @end 
    

    所以,你可以將它添加到您的網址前,使用您的JSON字符串stringByAddingPercentEscapesForURLParameterUsingEncoding。或者你可以自己撥打CFURLCreateStringByAddingPercentEscapes

0

謝謝你的所有建議,我現在已經從GET更改爲POST,並且一切正常。

相關問題