提问人:Ammar 提问时间:11/12/2013 更新时间:11/13/2013 访问量:6518
使用目标 C 从 url 检索 JSON [已关闭]
retriving JSON from a url using objective C [closed]
问:
我是objectiveC的新手, 我在从 url 检索 JSON 类型时遇到问题,url 表示一个 Web 服务,该服务已构建为同时返回 JSON 和 XML,当我尝试从 url 使用 Web 服务时,结果是 XML, 我需要的是确定请求中返回数据的数据类型为 JSON。 顺便说一句,我确信Web服务同时返回XML和JSON。
这是我获得XML的代码:
NSURL *url = [[NSURL alloc] initWithString:@"http://192.168.1.1:8080/test2/eattel/restaurants"];
NSString *result=[[NSString alloc] initWithContentsOfURL:url];
NSLog(@"%@",result);
结果是:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<restaurantImpls>
<Resstaurant Name="Abo Alshamat" PhoneNumber="0991992994" MobileNumber="0991992993" LastName="Shame" ID="1" FirstName="Samer"/>
<Resstaurant Name="AL-Kamal" PhoneNumber="0992993995" MobileNumber="0992993994" LastName="Ali" ID="2" FirstName="Ahmad"/>
<Resstaurant Name="Abo-MAhmoud" MobileNumber="0993377800" ID="12"/>
<Resstaurant Name="Four Season" PhoneNumber="0993994996" MobileNumber="0993994995" LastName="Ammar" ID="3" FirstName="William"/>
<Resstaurant Name="uuuuu" MobileNumber="0999555777" LastName="William" ID="20" FirstName="Ammar"/>
<Resstaurant Name="NewOneFromI2" MobileNumber="0999888777" ID="18"/>
<Resstaurant Name="JOURY" PhoneNumber="0999999998" MobileNumber="0999998997" ID="4"/>
<Resstaurant Name="TestTestRestaurant,Ammar,Hamed" MobileNumber="202020" ID="19"/>
</restaurantImpls>
感谢您抽出宝贵时间接受采访。
答:
3赞
manujmv
11/12/2013
#1
我们无法从请求中设置响应数据类型。响应是从服务器设置的。从您的描述(Web 服务返回 XML 和 JSON),我的猜测是您需要发布一个显示返回状态的状态变量,例如 .这只是我的猜测。您需要联系服务器端程序员了解此请求的实现。isXML
编辑试试下面的代码
responseData = [[NSMutableData alloc]init];
NSURL *url = [[NSURL alloc] initWithString:@"http://192.168.1.1:8080/test2/eattel/restaurants"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
[request setValue:@"application/json" forHTTPHeaderField:@"accept"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
(void)[NSURLConnection connectionWithRequest:req delegate:self];
然后,您需要实现 NSURLConnection 委托。
#pragma mark - NSURLConnection Delegates
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[responseData setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
[responseData appendData:data];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *responseString = [[NSString alloc]initWithData:responseData encoding:NSUTF8StringEncoding];
NSLog(@"%@",responseString);
}
评论
0赞
Ammar
11/12/2013
我可以为您解释更多,服务器已经测试了 android 应用程序,默认情况下它会将 JSON 返回到 Android 应用程序,但是在我的 iPhone 应用程序中,当我尝试获取 resault 时,它是 XML 格式,然后谁确定 retutn 类型?
1赞
manujmv
11/12/2013
您确定Android应用程序中没有发布变量吗?
0赞
Ammar
11/13/2013
@manujmv先生,在我如此 android 代码之后,我认为有 postingvariables,但我不知道如何使用目标 C 对其进行编码,这是 android 代码: DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);HttpGet getRequest = new HttpGet(getBase() + str);getRequest.addHeader(“接受”, “application/json”);HttpResponse 响应 = httpClient.execute(getRequest);结果 = getResult(response).toString();'
1赞
manujmv
11/13/2013
@Ammar:请找到我编辑的答案
1赞
manujmv
11/13/2013
_parserSource 是我的委托对象。你不需要那个。只需将其删除即可。你在 connectionDidFinishLoading 的 responseString 中得到响应
评论