簡體   English   中英

iOS設備可以向Rails應用程序發送PUT請求嗎?

[英]Can iOS devices send PUT requests to Rails apps?

我們已經多次嘗試向我們的Rails服務器發送更新PUT請求,並且我們繼續收到404“您正在尋找的頁面不存在”

我們的更新方法非常簡單(實際上是通用的rails)。

def update
@user = User.find(params[:id])

respond_to do |format|
  if @user.update_attributes(params[:user])
    format.html { redirect_to @user, notice: 'User was successfully updated.' }
    format.json { head :no_content }
  else
    format.html { render action: "edit" }
    format.json { render json: @user.errors, status: :unprocessable_entity }
  end
end

結束

當我從命令行運行CURL來測試更新方法時,它工作正常。 但是,當我在objective-c中嘗試相同的方法時,它總是會導致404錯誤。

所以我的問題是:iOS設備可以使用NSURLConnection向服務器發送PUT請求還是未實現?

更新::

這不會更新數據庫

NSString *dataString = @"user[first_name]=bob";
NSData *postBodyData = [NSData dataWithBytes: [dataString UTF8String] length:[dataString length]];
NSString *urlString = [NSString stringWithFormat:@"example.com/users/1.json"];
NSURL *fullURL = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:fullURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20];
[request setHTTPMethod: @"PUT"];
[request setHTTPBody:postBodyData];
self.todoConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
receivedData = [NSMutableData data];

這會更新數據庫

NSString *urlString = [NSString stringWithFormat:@"example.com/users/1.json?user[first_name]=bob"];
NSURL *fullURL = [NSURL URLWithString:urlString];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:fullURL cachePolicy:NSURLRequestReloadIgnoringLocalCacheData timeoutInterval:20];
[request setHTTPMethod: @"PUT"];
self.todoConnection = [[NSURLConnection alloc] initWithRequest:request delegate:self];
receivedData = [NSMutableData data];

實際上@ akshay1188有一個可行的解決方案,但我認為更優雅的方法是在請求中添加“application / x-www-form-urlencoded”內容類型:

[request setHTTPMethod:@"PUT"];
[request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
[request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

您可以創建NSMutableURLRequest並設置HTTP方法:

- (void)setHTTPMethod:(NSString *)method

給它字符串@"PUT"

以下是如何從這樣的請求創建NSURLConnection。

NSMutableURLRequest *myMutableRequest[[NSMutableURLRequest alloc] initWithURL:myURL];
[myMutableRequest setHTTPMethod:@"PUT"];
[NSURLConnection connectionWithRequest:myMutableRequest delegate:myDelegate];

將HTTP方法類型設置為@“POST”

並在請求體中添加一個參數:@“PUT”表示鍵@“_方法”

它應該工作。

暫無
暫無

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

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