[英]GET request with AFNetworking 3.0 in Objective-c
我正在努力基于Windows旧版本为iOS创建一个应用程序。 因此,在登录应用程序时,我需要连接到传递用户,传递和app_version的Web服务。 我要400,所以我在某处失败了。 这是我的代码:
static NSString *const BASE_URL = @"my://url";
static NSString *const SUBDIRECTORY = @"/api/v1";
static NSString *const API_NAME = @"Basic";
static NSString *const API_KEY = @"mykey";
- (void)logUserWithName:(NSString *)user
password:(NSString *)password
successBlock:(void(^)(void)) successBlock
failBlock:(void(^)(NSError *error)) failBlock {
NSDictionary *body = @{@"user" : user,
@"pass" : password,
@"app_version" : @"1.0"
};
NSError *error;
NSData *jsonData = [NSJSONSerialization dataWithJSONObject:body options:0 error:&error];
NSString *jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
NSString *auth = [[API_NAME stringByAppendingString:@" "] stringByAppendingString:API_KEY];
NSString *URL = [[BASE_URL stringByAppendingString:SUBDIRECTORY] stringByAppendingString:@"/auth"];
AFURLSessionManager *manager = [[AFURLSessionManager alloc] initWithSessionConfiguration:[NSURLSessionConfiguration defaultSessionConfiguration]];
NSMutableURLRequest * req = [[AFJSONRequestSerializer serializer] requestWithMethod:@"GET" URLString:URL parameters:nil error:nil];
[req setValue:auth forHTTPHeaderField:@"Authorization"];
[req setHTTPBody:[jsonString dataUsingEncoding:NSUTF8StringEncoding]];
req.timeoutInterval = [[[NSUserDefaults standardUserDefaults] valueForKey:@"timeoutInterval"] longValue];
manager.responseSerializer = [AFJSONResponseSerializer serializer];
[[manager dataTaskWithRequest:req completionHandler:^(NSURLResponse * _Nonnull response, id _Nullable responseObject, NSError * _Nullable error) {
if (!error) {
NSLog(@"Reply JSON: %@", responseObject);
successBlock();
} else {
NSLog(@"Error: %@, %@, %@", error, response, responseObject);
failBlock(error);
}
}] resume];
}
在这里,我在Windows应用程序中实现了相同的操作,该操作正常进行:
private const String BASE_URL = @"my://url";
private const String SUBDIRECTORY = "/api/v1";
private static String API_NAME = "Basic";
//private static String API_KEY = "exampleAPI_KEY";
private static String API_KEY = "mykey";
private static String AUTH = API_NAME + " " + API_KEY;
private const String NETWORK_ERROR = "Network error";
private const String ERROR = "Error ";
// all operation returns error_code and error_message
//returns an array[] de un elemento{} user_token
public static async Task<UserToken> Login(string User, string Pass, string App_version)
{
var Client = new RestClient(new Uri(BASE_URL));
Client.IgnoreResponseStatusCode = true;
var Request = new RestRequest(SUBDIRECTORY + "/auth", Method.GET);
Request.AddHeader("Authorization", AUTH);
Request.AddParameter("Content-type", "application/json", ParameterType.HttpHeader);
Request.AddParameter("user", User, ParameterType.GetOrPost);
Request.AddParameter("pass", Pass, ParameterType.GetOrPost);
Request.AddParameter("app_version", App_version, ParameterType.GetOrPost);
var Response = await Client.Execute<UserToken>(Request);
var ResponseData = Response.Data;
if (Response.StatusCode == System.Net.HttpStatusCode.OK)
{
return ResponseData;
}
尝试这个
NSString *urlAsString = @"http://------------";
NSURL *url = [NSURL URLWithString:urlAsString];
NSMutableURLRequest *urlRequest = [NSMutableURLRequest requestWithURL:url];
[urlRequest setTimeoutInterval:30.0f];
[urlRequest setHTTPMethod:@"POST"];
NSString *body =[NSString stringWithFormat:@"apiKey=%@&platform=%@",@"param1",@"param2"];
[urlRequest setHTTPBody:[body dataUsingEncoding:NSUTF8StringEncoding]];
NSOperationQueue *queue = [[NSOperationQueue alloc] init];
[NSURLConnection
sendAsynchronousRequest:urlRequest
queue:queue
completionHandler:^(NSURLResponse *response,
NSData *data,
NSError *error) {
if ([data length] >0 && error == nil){
NSDictionary *responseDict = [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
NSLog(@"getConfig respo is : %@",responseDict);
if(responseDict!=nil)
{
if([[responseDict valueForKey:@"Status"] integerValue] == 200)
{
NSLog(@"getConfig success");
}
else
{
}
}
else
{
NSLog(@"getConfig nil Dic ");
}
}
else
{
NSLog(@"getConfig error : %@",error);
}
}];
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.