【问题标题】:Posting data to .NET WebAPI from objective-C/cocoa从objective-C/cocoa 将数据发布到.NET WebAPI
【发布时间】:2013-10-09 19:41:33
【问题描述】:

我有一个非常基本的 WebAPI 控制器:

[HttpGet]
public IQueryable<User> GetUsers()
{
    return _users.AsQueryable();
}

[HttpPost]
public User AddUser(User toAdd)
{
    _userRepository.AddUser(toAdd);
}

User 对象也同样简单:

public class User
{
    public String name { get; set; }
    public String email { get; set; }
}

(显然有些无聊的部分被省略了!)

通过 C# 调用、jQuery 调用等向服务发布可以正常工作。

使用 javascript/jquery 我会做类似的事情:

var user = {
    "Name" : "Persons Name",
    "Email" : "Email@Email.com"
}

var processed = JSON.stringify(user);

$.ajax({
    url: url,
    data: processed,
    success: ....
    ...
});

我正在尝试将其从 Objective-C 发布到 POST。 GET 工作得很好,所以我知道它可以连接等。

我已经尝试了各种方法来尝试让它通过 JSON 发布一个对象,但我没有运气。 谁能指出我正确的方向?

谢谢!

【问题讨论】:

    标签: jquery objective-c cocoa asp.net-web-api


    【解决方案1】:

    您只需使用您的数据创建一个 NSDictionary:

    NSDictionary *postDict = [[NSDictionary alloc] initWithObjectsAndKeys:
                              @"Person Name", @"Name",
                              @"Email@Email.com", @"Email",
                              nil];
    

    然后,将其转换为 NSData 并创建您的请求

    NSError *error = nil;
    NSData* jsonData = [NSJSONSerialization dataWithJSONObject:postDict options:kNilOptions error:&error];
    NSURLResponse *response;
    NSData *localData = nil;
    
    NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:[NSURL URLWithString:yourUrl]];
    [request setHTTPMethod:@"POST"];
    

    最后,将您的请求发送到服务器:

    if (error == nil)
    {
        [request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
        [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
        [request setHTTPBody:jsonData];
    
        // Send the request and get the response
        localData = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
    
        NSString *result = [[NSString alloc] initWithData:localData encoding:NSASCIIStringEncoding];
        NSLog(@"Post result : %@", result);
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-07-12
      • 2013-05-13
      • 2021-12-21
      • 2015-12-07
      • 2019-02-14
      • 2013-01-23
      • 2018-11-22
      • 1970-01-01
      相关资源
      最近更新 更多