从objective-C/cocoa向.NET WebAPI发布数据

4

我有一个相当基本的WebAPI控制器:

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

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

用户对象同样简单:

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发布对象,但是我一直失败。

有谁能指点我正确的方向吗?

谢谢!

1个回答

3
您只需创建一个包含您的数据的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);
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接