2012-06-05 138 views
0

現在我試圖通過PHP將jpeg文件發佈到MySQL,並通過MySQL將MySQL發佈到iOS。通過SBJson從PHP解析JSON

在GET方法中,我使用json_encode()將jpeg(作爲NSData)和一些相關數據(例如標題,時間戳)編碼爲PHP腳本上的JSON。

{"caption":"(captiondata)","img":"(imagedata)","timestamp":"(timestampdata)"} 

然後我設置的DATAS到數組一樣,

[{"caption":"(captiondata)","img":"(imagedata)","timestamp":"(timestampdata)"}, 
    {"caption":"(captiondata)","img":"(imagedata)","timestamp":"(timestampdata)"}, 
    ......., 
    {"caption":"(captiondata)","img":"(imagedata)","timestamp":"(timestampdata)"}] 

我相信我可以分析和回聲(json_encode())PHP和SBJsonParser在iOS上獲得此JSON,但沒有返回到我應用。這是我在iOS的代碼。(我也使用TTURLRequest通過Three20)

TTURLRequest* request = [TTURLRequest requestWithURL:url delegate:self]; 
    request.cachePolicy = cachePolicy; 
    TTURLJSONResponse* response = [[[TTURLJSONResponse alloc] init] autorelease]; 
    request.response = response; 
    [request send]; 

    - (void)requestDidFinishLoad:(TTURLRequest*)request { 
     TTURLJSONResponse* response = request.response; 
     NSLog(@"%@",response); 
    } 
+0

如果您的目標是iOS5 +,請考慮使用Apple自己的JSON解析器。 http://developer.apple.com/library/ios/#documentation/Foundation/Reference/NSJSONSerialization_Class/Reference/Reference.html – Devraj

+0

@Devraj看起來好極了。感謝您的回答。 – nakazy

+0

控制檯中輸出的是什麼?嘗試放一個'NSLog(@「didFinishLoad fired」);'來判斷'r​​equestDidFinishLoad'是否被觸發。 – aporat

回答

0

能否打印所有的日誌中requestDidFinishLoad:

響應是rootObjectTTURLJSONResponse

- (void)requestDidFinishLoad:(TTURLRequest*)request { 

    TTURLJSONResponse *response = request.response; 
    NSDictionary *dict = response.rootObject; 
    NSLog(@"dict : %@",dict); 

} 

在你的情況,

- (void)requestDidFinishLoad:(TTURLRequest*)request { 
    TTURLJSONResponse* response = request.response; 
    NSLog(@"%@",response); 
} 

的響應可能看起來像<TTURLJSONResponse: 0x125398c0>

如果仍然沒有返回,您可以檢查requestDidFinishLoad:是被稱爲,而不是高速緩存的問題。

+0

感謝您的回答。我更改了我的代碼並進行了檢查,但PHP只返回**()**。我現在設置request.cachePolicy = TTURLRequestCachePolicyNone。 – nakazy