2011-05-04 120 views
1

新手入門Rails/iOS在這裏。我有一個Rails博客應用程序。我試圖用ASIFormDataRequest的HTTP POST方法從iOS上傳文章。這裏是所謂的代碼:來自iPhone的使用ASIFormDataRequest無法使用的發佈請求

NSURL *url=[[NSURL alloc] initWithString:@"http://localhost:3000/posts"]; 
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
    [request setPostValue:@"Ben" forKey:@"name"]; 

    [request setFile:@"star.png" forKey:@"image"]; 
    [request startSynchronous]; 
    NSString *response = [request responseString]; 
    NSLog(@"response:: %@", response); 

當我運行此代碼時,沒有任何反應。我的服務器沒有聯繫。我得到response ::(null)。任何想法爲什麼?

編輯我發現star.png需要有完整的文件地址。現在POST工作正常,但名稱或圖像都不會保存到數據庫中。有空名稱和圖像的新帖子被創建。任何想法爲什麼?

+1

請求的迴應是什麼? – 2011-05-04 09:02:48

+0

響應爲空 – John 2011-05-04 09:10:56

+1

您是否對請求的錯誤構成威脅? – 2011-05-04 09:12:35

回答

1

爲什麼你在這裏使用localhost?

NSURL *url=[[NSURL alloc] initWithString:@"http://localhost:3000/posts"]; 

使用你的Web服務器的IP,而不是本地主機

NSURL *url=[[NSURL alloc] initWithString:@"http://yourservername:3000/posts"]; 
+0

我的導軌應用程序現在是當地的 – John 2011-05-04 09:23:54

+0

你能告訴我嗎?你的rails服務器ip和iphone ip是什麼?我希望你把網絡服務器的IP就像這樣:http:// webserverip:3000/posts – 2011-05-04 09:29:14

+0

有一件事你可以檢查:),如果你在你的iPhone Safari上放置http:// localhost:3000你會得到什麼? – 2011-05-04 09:31:37

1
NSData *imageData = [NSData dataWithContentsOfFile:imagePath]; 
NSURL *url=[[NSURL alloc] initWithString:@"http://localhost:3000/posts"]; 
ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url]; 
[request setPostValue:@"Ben" forKey:@"name"]; 

[request setPostValue:imageData forKey:@"image"]; 
[request startSynchronous]; 

對於 「ImagePath的」 是路徑到您的圖像。完整的路徑。

+0

我修復了這個部分。現在它不會被保存到數據庫中。以下是來自瀏覽器的成功帖子的日誌:參數:{「commit」=>「Create Post」,「post」=> {「name」=>「119am」,「image」=>#「Ben」,「image」=># John 2011-05-04 09:32:38