【发布时间】:2015-12-04 09:50:07
【问题描述】:
我知道本网站不允许提出一般性问题 - 但我遇到的问题似乎与我的代码无关。这是我的代码前一分钟工作,下一分钟没有工作的计算机问题之一——我没有改变任何东西。我将发布我认为相关的代码 - 但我没有收到任何错误消息,无论是在我的调试控制台中的 XCode 还是在服务器端的 apache2 错误日志中。
可能相关的代码:
- (void)imagePickerController:(UIImagePickerController *)picker didFinishPickingMediaWithInfo:(NSDictionary *)info {
UIImageWriteToSavedPhotosAlbum(info[UIImagePickerControllerOriginalImage], nil, nil, nil);
NSString * uploadURL = @"http://192.168.1.4/upload.php";
NSLog(@"uploadImageURL: %@", uploadURL);
NSData *imageData = UIImageJPEGRepresentation(info[UIImagePickerControllerOriginalImage], 0.5);
NSString *queryStringss = [NSString stringWithFormat:@"%@",uploadURL];
queryStringss = [queryStringss stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];
//manager.responseSerializer.acceptableContentTypes = nil;
manager.responseSerializer=[AFJSONResponseSerializer serializerWithReadingOptions:NSJSONReadingAllowFragments];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/html"];
manager.responseSerializer.acceptableContentTypes = [manager.responseSerializer.acceptableContentTypes setByAddingObject:@"text/plain"];
NSUserDefaults *userdefaults = [NSUserDefaults standardUserDefaults];
NSString *usernameEncoded = [[userdefaults objectForKey:@"pfuser"]stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
NSDictionary *params = @{@"username": usernameEncoded, @"count": [userdefaults valueForKey:@"count"]};
[manager POST:queryStringss parameters:params constructingBodyWithBlock:^(id<AFMultipartFormData> formData) {
[formData appendPartWithFileData:imageData name:@"file" fileName:@"file.jpeg" mimeType:@"image/jpeg"];
}
success:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"Success: %@ ***** %@", operation.responseString, responseObject);
NSInteger count = [userdefaults integerForKey:@"count"];
NSNumber *stored = [[NSNumber alloc] initWithInt:count];
count++;
[userdefaults setInteger:count forKey:@"count"];
GMSMarker *marker3 = [[GMSMarker alloc] init];
marker3.position = mapView_.myLocation.coordinate;
marker3.title = [userdefaults objectForKey:@"pfuser"];
marker3.map = mapView_;
PFGeoPoint *point = [PFGeoPoint geoPointWithLatitude:mapView_.myLocation.coordinate.latitude longitude:mapView_.myLocation.coordinate.longitude];
PFObject *pointstore = [PFObject objectWithClassName:@"MapPoints"];
pointstore[@"title"] = [userdefaults objectForKey:@"pfuser"];
pointstore[@"location"] = point;
pointstore[@"count"] = stored;
[pointstore saveEventually:^(BOOL succeeded, NSError *error) {
if (error) {
NSLog(@"Error");
}
else {
dispatch_async(dispatch_get_main_queue(), ^(void){
mapView_.settings.myLocationButton = YES;
});
}
}];
}
failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Error: %@ ***** %@", operation.responseString, error);
}];
[picker dismissViewControllerAnimated:YES completion:NULL];
}
上面是应该执行的代码。它似乎一直执行到[manager POST:queryStringss parameters:params...
我没有看到 NSLog 成功或失败消息,它只是停止运行...尽管应用程序没有崩溃...应用程序继续正常运行。
今天早上任何帮助将不胜感激(我愿意与知道他们在做什么的人一起工作,通过聊天或类似的方式)。提前致谢!
更新
PHP服务器端代码:
<?php
header("Content-Type: application/json");
$username = $_POST['username'];
$count = $_POST['count'];
$base64string = base64_encode(file_get_contents("images/".$username."/".$count."/".$username."file".$count.".jpeg"));
echo json_encode(array("image" => $base64string));
?>
更新
这是我现在声明manager 的地方:
#import "ViewController.h"
#import "SignUpController.h"
#import <Parse/Parse.h>
#import "AFHTTPRequestOperation.h"
#import "AFHTTPRequestOperationManager.h"
@import GoogleMaps;
typedef void (^CompletionHandlerType)();
@interface ViewController ()
@end
@implementation ViewController {
GMSMapView *mapView_;
BOOL firstLocationUpdate_;
CLLocationManager *locationManager;
UIImageView *image;
UIButton *respondButton;
AFHTTPRequestOperationManager *manager;
}
...
更新
在 TheEye 提供了一些出色的帮助后 - 我们发现,使用邮递员(Chrome 扩展程序),由于某种原因,该应用程序无法找到该页面……我收到了 404 响应(来自邮递员)。我还没有弄清楚为什么会这样,如果再提供帮助将不胜感激......但我可能不会马上回复,因为我很累。
【问题讨论】:
-
您无法 ping 未回答/未对您的问题发表评论的人。 - 这似乎与php没有太大关系?
-
你能试试写“[picker dismissViewControllerAnimated:YES completion:NULL];”一开始。
-
Manager 应该作为 ivar 分配在您的委托方法之外(或者甚至可能作为单例独立)。在您的情况下,它在请求完全处理之前被释放。
-
@Epodax 只是因为 apache 是我提出这个的原因 - 涉及一些 php...我会发布它
-
您现在是否还在声明的实例变量上设置了管理器,或者您是否将
AFHTTPRequestOperationManager *manager = [AFHTTPRequestOperationManager manager];保留在代码中 - 这将覆盖实例变量
标签: php ios objective-c iphone afnetworking