簡體   English   中英

在iOS中發送HTTP PATCH請求(目標-c)

[英]send HTTP PATCH request in iOS (Objective-c)

我正在使用REST API,其中一種API是PATCH ,我嘗試使用以下代碼來調用它,但會引發錯誤,而同一API在Postman客戶端中也可以工作。

+ (NSURLSessionTask *)callPATCHAPIWithAPIName:(NSString *)apiName andCompletionHandler:(void(^)(id result, NSInteger responseCode, NSError *error))completionHandler
{
    NSString *getURL = @"192.168.1.100/UpdateDeviceInfo/iPhone6/OS 9.2";
    NSURL *URL = [NSURL URLWithString:getURL];
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:URL];

    NSURLSessionConfiguration *sessionConfiguration = [NSURLSessionConfiguration defaultSessionConfiguration];
    sessionConfiguration.timeoutIntervalForRequest = 45.0f;

    NSURLSession *session = [NSURLSession sessionWithConfiguration:sessionConfiguration];

    // Create Data from request
    NSData *requestData = [NSData dataWithBytes: [@"" UTF8String] length:[@"" length]];

    [request setHTTPMethod:@"PATCH"];
    [request setValue:[NSString stringWithFormat:@"%lu", (unsigned long)[requestData length]] forHTTPHeaderField:@"Content-Length"];

    [request setHTTPBody:requestData];

    NSURLSessionDataTask *task = [session dataTaskWithRequest:request
                                            completionHandler:
                                  ^(NSData *data, NSURLResponse *response, NSError *error)
                                  {
                                      NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *) response;

                                      NSInteger responseCode = [httpResponse statusCode];
                                      NSLog(@"response Code : %ld",(long)responseCode);
                                  }];

    [task resume];
    return task;
}

[錯誤:錯誤域= NSURLErrorDomain代碼= -1002“不支持的URL” UserInfo = {NSLocalizedDescription =不支持的URL,NSUnderlyingError = 0x14e86d490 {錯誤域= kCFErrorDomainCFNetwork代碼= -1002“(null)”}}]]

我在查詢字符串中而不是在請求正文中傳遞參數。 盡管同一件事在Postman客戶端和Android中也可以正常工作。

看來您在NSString *getURL = @"192.168.1.100/UpdateDeviceInfo/iPhone6/OS 9.2"有一個空格NSString *getURL = @"192.168.1.100/UpdateDeviceInfo/iPhone6/OS 9.2"

我認為URL格式不支持空格! 相反,如果需要空格,請確保使用getURL = [getURL stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]; 為了處理網址字符串中的空格!

暫無
暫無

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

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