Ranjith Reddy Ranjith Reddy - 3 months ago 17
JSON Question

JSON parsing using NSURL with authorization

In the following code JSONparsing method is working fine , but when I am changing url in odataJsonParsing method with: http://192.168.1.37:8000/sap/opu/odata/sap/ZGW_BANK_DATA_SRV/BankSet? $filter=(BankCtry%20eq%20%27IN%27)&$format=json unable to load the data, it is showing Nil, but same method is working fine for remaining urls, can any one suggest me where I went wrong.

**Condition**: In odataJsonParsing method have authorization credentials like.



Blockquote


NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: [NSURL URLWithString:@"http://192.168.1.37:8000/sap/opu/odata/sap/ZGW_BANK_DATA_ SRV/BankSet?$filter=(BankCtry%20eq%20%27US%27)&$format=json"]];
[request setHTTPMethod: @"GET" ];
// [request setHTTPBody:self.requestData];
[request setValue:@"XXXXXXX" forHTTPHeaderField:@"username"];
[request setValue:@"XXXXXXX" forHTTPHeaderField:@"password"];
[request setValue:[[NSUserDefaults standardUserDefaults]valueForKey:@"Auth"] forHTTPHeaderField:@"Authorization"];
[request setValue:@"application/json" forHTTPHeaderField:@"Content-Type"];
-----------------------------------------------------------------
-(void )JSONParsing
{
NSError *error;
//--------------------------URLS----------------------------//
//http://api.geonames.org/citiesJSON? north=44.1&south=-9.9&east=-22.4&west=55.2&lang=de&username=demo

//http://api.kivaws.org/v1/loans/search.json?status=fundraising

//http://192.168.1.37:8000/sap/opu/odata/sap/ZGW_BANK_DATA_SRV/BankSet? $filter=(BankCtry%20eq%20%27IN%27)&$format=json

//http://jsonplaceholder.typicode.com/posts

NSURL *url=[NSURL URLWithString:@"http://jsonplaceholder.typicode.com/posts"];

NSData *jsonData=[[NSData alloc] initWithContentsOfURL:url];

if(jsonData!=nil){
NSDictionary *jsonArray=[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
NSLog(@"%@",jsonArray);
}

}

-(void)oDataJsonParsing
{
NSError *error;
NSData *jsonData=[[NSData alloc] initWithContentsOfURL:[NSURL URLWithString:@"http://192.168.1.37:8000/sap/opu/odata/sap/ZGW_BANK_DATA_ SRV/BankSet?$filter=(BankCtry%20eq%20%27IN%27)&$format=json"]];

NSDictionary *dic=[NSJSONSerialization JSONObjectWithData:jsonData options:NSJSONReadingMutableContainers error:&error];
NSLog(@"%@",dic);
}

Answer
NSURL *url = [NSURL URLWithString:@"http://192.168.1.37:8000/sap/opu/odata/sap/ZGW_BANK_DATA_SRV/BankSet?$filter=(BankCtry%20eq%20%27CH%27)&$format=json"];
 NSMutableURLRequest *request= [NSMutableURLRequest requestWithURL:url cachePolicy:NSURLRequestUseProtocolCachePolicy timeoutInterval:120.0];

NSString *authStr = [NSString stringWithFormat:@"%@:%@", @"abaper", @"initial@xyz"];
NSData *authData = [authStr dataUsingEncoding:NSUTF8StringEncoding];
NSString *authValue = [NSString stringWithFormat:@"Basic %@", [authData base64EncodedStringWithOptions:0]];

[request setValue:authValue forHTTPHeaderField:@"Authorization"];
NSError *error ;
NSHTTPURLResponse *responseCode = nil;

NSData *oResponseData = [NSURLConnection sendSynchronousRequest:request returningResponse:&responseCode error:&error];
if([responseCode statusCode] != 200)
{

    NSLog(@"Error getting %@, HTTP status code %li", url, (long)[responseCode statusCode]);

}
else{
    NSDictionary *responsedata = [NSJSONSerialization JSONObjectWithData:oResponseData options:NSJSONReadingAllowFragments error:&error];

    NSLog(@"%@",response data);

   }