IOS JSON против веб-служб ASPNET - PullRequest
0 голосов
/ 02 февраля 2012

Может кто-нибудь, пожалуйста, помогите мне?Я застрял в этой проблеме на долгое время.

Я занимаюсь разработкой IOS, которая генерирует JSON в веб-сервис для вставки в базу данных.Но не удалось этого сделать.

Исходный код IOS

-(IBAction)signup{

    NSMutableDictionary * dic = [NSMutableDictionary dictionary];
    [dic setObject:@"0" forKey:@"account_id"];
    [dic setObject:@"Jin" forKey:@"first_name"];
    [dic setObject:@"Lim" forKey:@"last_name"];
    [dic setObject:@"1987-12-02" forKey:@"date_of_birth"];
    [dic setObject:@"M" forKey:@"account_gender"];
    [dic setObject:@"65" forKey:@"phone_country_id"];
    [dic setObject:@"123456" forKey:@"account_phone"];
    [dic setObject:@"jin@test.biz" forKey:@"account_login"];

    [svc execMethod:dic];  
}

, а затем

-(void) execMethod:(NSMutableDictionary *)dic{

    NSURL * url = [NSURL URLWithString:@"http://test.biz/AccountInfo.asmx/insert_account"];

    //Request 
    NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:url];
    NSData* requestData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:nil];

    //prepare http body
    [request setHTTPMethod:@"POST"];
    [request setValue:[NSString stringWithFormat:@"%d",[requestData length]] forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/json" forHTTPHeaderField:@"Accept"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];
    [request setHTTPBody:requestData];

    urlConnection = [[NSURLConnection alloc]initWithRequest:request delegate:self startImmediately:YES];

    UIApplication *app = [UIApplication sharedApplication];
    app.networkActivityIndicatorVisible = YES;
}

Веб-служба

{WebMethod()} _
{ScriptMethod(ResponseFormat:=ResponseFormat.Json, UseHttpGet:=False)}_
Public Function insert_account(ByVal result As Account) As String

    Dim account As New Account
    account = result
    Dim msg As String

    **Processing Result***

    Return "msg:'OK'"

End Function

P / S: I Использовал {} для замены> <для метода веб-сервиса </strong>

Ошибка в NSLOG

2012-02-02 16:25:11.433 test.biz[10642:f803] System.InvalidOperationException: insert_account Web Service method name is not valid.
   at System.Web.Services.Protocols.HttpServerProtocol.Initialize()
   at System.Web.Services.Protocols.ServerProtocol.SetContext(Type type, HttpContext context, HttpRequest request, HttpResponse response)
   at System.Web.Services.Protocols.ServerProtocolFactory.Create(Type type, HttpContext context, HttpRequest request, HttpResponse response, Boolean& abortProcessing)

Пожалуйста, скажите мне, что я сделал неправильно, спасибо за помощь:)

1 Ответ

0 голосов
/ 03 февраля 2012

Я нашел решение:

-(IBAction)signup{

    NSMutableDictionary * dic = [NSMutableDictionary dictionary];
    [dic setObject:@"0" forKey:@"account_id"];
    [dic setObject:@"Jin" forKey:@"first_name"];
    [dic setObject:@"Lim" forKey:@"last_name"];
    [dic setObject:@"1987-12-02" forKey:@"date_of_birth"];
    [dic setObject:@"M" forKey:@"account_gender"];
    [dic setObject:@"65" forKey:@"phone_country_id"];
    [dic setObject:@"123456" forKey:@"account_phone"];
    [dic setObject:@"jin@test.biz" forKey:@"account_login"];

    NSMutableDictionary * result = [NSMutableDictionary dictionary];
    [result setObject:dic forKey:@"result"];

    NSURL * url = [NSURL URLWithString:@"http://test.biz/AccountInfo.asmx/insert_account"];

    svc = [[JSONRPCService alloc] initWithURL:url];

    [svc execMethod:result];
}

Просто нужно добавить заголовок для JSON.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...