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 に答える