如何在iOS中使用ASI Http将数据发布到Web服务?

oky*_*eni 5 iphone objective-c nsurlconnection asihttprequest ios

我使用的ASI页面提供的说明这里.我试图将一些数据发送到Web服务,但没有看到任何结果.

这是我sendRequest调用的方法viewDidLoad

-(void)sendRequest {
    NSURL *url = [NSURL URLWithString:@"http://153.60.6.75:8080/BarcodePayment/transactions"];
    ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
    [request addRequestHeader:@"Accept" value:@"application/json"];
    [request addRequestHeader:@"Content-Type" value:@"application/json"];
    NSString *dataContent = @"{\"id\":7,\"amount\":7.0,\"paid\":true}";
    NSLog(@"dataContent: %@", dataContent);
    [request appendPostData:[dataContent dataUsingEncoding:NSUTF8StringEncoding]];
    [request setRequestMethod:@"POST"];
}
Run Code Online (Sandbox Code Playgroud)

我检查dataContent字符串,输出是

{"id":7,"amount":7.0,"paid":true}
Run Code Online (Sandbox Code Playgroud)

如果我使用终端的curl,我检查了这个命令.

curl -X POST -H 'Accept:application/json' -H 'Content-Type: application/json' http://153.60.6.75:8080/BarcodePayment/transactions/ --data '{"id":7,"amount":7.0,"paid":true}'
Run Code Online (Sandbox Code Playgroud)

我的理解是,在使用curl时,我将其设置为json,指定地址,指定与dataContent我的代码中等效的数据.什么都没发生.怎么了?

谢谢您的帮助!

Suh*_*tel 3

除了最关键的组件(启动请求)之外,您几乎拥有了所有内容

\n\n

您需要添加[request startSynchronous];同步请求或[requester startAsynchronous];异步请求(并且您可能需要委托方法来处理您返回的任何响应)

\n\n

ASIHTTPRequest 如何使用指南中对此进行了很好的介绍。与此最相关的部分是“创建同步请求”和“创建异步请求”。还有一些值得思考的内容摘自该页面:

\n\n
\n

一般来说,您应该优先使用异步请求而不是同步请求。当您从主线程同步使用 ASIHTTPRequest 时,您的 application\xe2\x80\x99s 用户界面将锁定并在请求期间变得不可用。

\n
\n