我想验证从我的iPhone应用程序,我可以调用我的自定义网站API(PHP)并发送/接收信息没有任何问题。如果是这样,是否有首选的交易语言? XML,JSON,还有什么?
我只是不确定是否需要通过SSL进行任何网络通话......这只是一个无害的问题。
答案 0 :(得分:0)
您可以使用XML或JSON。 JSON被认为比XML更轻量级。
答案 1 :(得分:0)
我认为json应该是解析的好媒介。 json-framework可以很容易地将NSDictionary和原始对象转换为json数据,反之亦然。
使用json轻松实现Web服务。
{ name : value , name : value } = NSDictionary
[ value , value , value] = NSArray
NSString, NSNumber, BOOL and NSNull are the items it create, I believe.
查看此页面https://github.com/stig/json-framework
我将包含一些针对json-framework构建的代码,并与json Web服务一起使用。
- (NSDictionary*) sendJSONRPCRequestTo:(NSString*) url
forCommand:(NSString*)command
withParamaters:(NSMutableArray*) parameters
synchronous:(BOOL) sendSynchronous
{
if (self.commandId == nil)
{
self.commandId = @"1";//Just set a commandID
}
NSMutableURLRequest *request = [self.baseTransaction makeNewRequestFor:url];
NSMutableDictionary *mainPackage = [NSMutableDictionary dictionary];
[mainPackage setValue:self.commandId forKey:@"id"];
[mainPackage setValue:command forKey:@"method"];
[mainPackage setValue:parameters forKey:@"params"];
NSString *jsonData = [mainPackage JSONRepresentation];
[request setValue:command forHTTPHeaderField:@"X-JSON-RPC"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
if (jsonData != nil && [jsonData isEqual:@""] == NO)
{
[request setHTTPMethod:@"POST"];
[request setValue:[[NSNumber numberWithInt:[jsonData length]] stringValue] forHTTPHeaderField:@"Content-Length"];
}
[request setHTTPBody:[jsonData dataUsingEncoding:NSUTF8StringEncoding]];
if (sendSynchronous)
{
NSHTTPURLResponse * response = nil;
NSError * error = nil;
NSData *data = [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
NSString *jsonResult = [[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding] autorelease];
NSDictionary *jsonDict = nil;
@try
{
jsonDict = [jsonResult JSONValue];
}
@catch (NSException * e)
{
NSLog(@"Error: %@",jsonResult);
jsonDict = [NSMutableDictionary dictionary];
[jsonDict setValue:self.commandId forKey:@"id"];
[jsonDict setValue:@"Unable to call function on server" forKey:@"error"];
[jsonDict setValue:[NSNull null] forKey:@"result"];
}
@finally
{
return jsonDict;
}
}
return nil;
}
此代码用于.net服务器上的jayrock webservices。
答案 2 :(得分:0)
SDK缺少对XML和JSON的本机支持。对于JSON,第三方库支持更好一点 - 我会使用它。
您不需要使用SSL - 您可以使用您想要的任何协议和端口。
您可以使用[NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];
,NSMutableURLRequest
,NSURLResponse
和NSError
作为三个参数。
答案 3 :(得分:0)
您可以使用HTTP库或内置Cocoa Framework代码调用任何URL。
我推荐ASIHTTPRequest,它允许异步HTTP请求和简单的进度报告。
您可以使用NSXMLParser类解析返回的数据(作为XML)。这个类的缺点是它是线性的而不是那么灵活。 Ray Wenderlich有an article on the topic of XML parsing on iOS。