4

我有一个非常基本的 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 发布一个对象,但我没有运气。谁能指出我正确的方向?

谢谢!

4

1 回答 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);
}
于 2013-10-03T12:06:49.267 回答