我正在使用ASI页面here中提供的说明。我正在尝试将一些数据发送到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"];
}
我检查dataContent
字符串,输出是
{"id":7,"amount":7.0,"paid":true}
如果我使用来自终端的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}'
我的理解是,在使用curl时,我将其设置为json,指定地址,在我的代码中指定等同于dataContent
的数据。什么都没发生。怎么了?
感谢您的帮助!
答案 0 :(得分:3)
除了最重要的组件启动请求之外,你几乎拥有一切
您需要为同步请求添加[request startSynchronous];
或为异步请求添加[requester startAsynchronous];
(并且您可能需要委托方法来处理您所拥有的任何响应)
在ASIHTTPRequest How to Use Guide中,这一切都很好。与此最相关的部分是“创建同步请求”和“创建异步请求”。从该页面也可以考虑一下:
通常,您应该优先使用异步请求而不是同步请求。当您从主线程同步使用ASIHTTPRequest时,您的应用程序的用户界面将锁定并在请求期间变得不可用。
答案 1 :(得分:2)
你忘了打电话:
[request setDelegate: self];
[request startAsynchronous];
或者:
[request startSynchronous];
如果您不打电话,则永远不会发出请求:)
答案 2 :(得分:1)
我的代码中没有看到[request startSynchronous]
(或[request startAsynchronous]
)的电话......您是否在任何地方发起请求?
答案 3 :(得分:1)
看起来您没有致电[request startAsynchronous];
检查ASIHTTPRequest documentation以了解有关如何使用
的更多详细信息答案 4 :(得分:1)
您实际上并未发送请求。
1)您需要调用[request startSynchronous]或[request startAsynchronous]
2)如果您使用异步(您可能应该这样做),则需要设置委托并实现 - (void)requestFinished:(ASIHTTPRequest *)请求方法。
答案 5 :(得分:0)
- (void)postThresholdDetails:(NSDictionary *)info
{ NSString * urlString = [NSString stringWithFormat:@"%@%@ /",BaseUrl,PostThresholdDetails]; NSURL * url = [NSURL URLWithString:urlString];
ASIHTTPRequest *request = [ASIHTTPRequest requestWithURL:url];
[request setRequestMethod:@"POST"];
[request setDelegate:self];
[request setTimeOutSeconds:120];
[request addRequestHeader:@"Accept" value:@"application/json"];
[request addRequestHeader:@"content-type" value:@"application/x-www-form-urlencoded"];
request.allowCompressedResponse = NO;
request.useCookiePersistence = NO;
request.shouldCompressRequestBody = NO;
[request setPostBody:[NSMutableData dataWithData: [info objectForKey:@"jsondata"] ]];
[request startAsynchronous];
}