Iphone 将数据过帐到目标C中的Wufoo表单

Iphone 将数据过帐到目标C中的Wufoo表单,iphone,ios,objective-c,json,wufoo,Iphone,Ios,Objective C,Json,Wufoo,我正在尝试将集成到iPhone应用程序中,但在最后阶段遇到了困难。我曾经成功地连接到Wufoo表单,创建了AFHTTPClient的子类以容纳所需的额外头,例如HTTP授权。我还将参数编码设置为AFJSONParameterEncoding 当我使用上面的命令发出请求时,它成功地连接到服务器并发布数据,但是返回一个错误来处理空白字段。我在NSDictionary中添加了字段/密钥对,以便在请求中传递,但它们的格式肯定错误,因为它们在另一端没有得到处理。对不起,我知道这是一个很长的问题,但如果有任

我正在尝试将集成到iPhone应用程序中,但在最后阶段遇到了困难。我曾经成功地连接到Wufoo表单,创建了AFHTTPClient的子类以容纳所需的额外头,例如HTTP授权。我还将参数编码设置为AFJSONParameterEncoding

当我使用上面的命令发出请求时,它成功地连接到服务器并发布数据,但是返回一个错误来处理空白字段。我在NSDictionary中添加了字段/密钥对,以便在请求中传递,但它们的格式肯定错误,因为它们在另一端没有得到处理。对不起,我知道这是一个很长的问题,但如果有任何帮助,我们将不胜感激:)。我已经附加了在控制台中得到的响应以及相关的类文件/方法

答复: 日记格式.m

 -(NSDictionary *)getParameters {
   
        NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:
                       emailAddress, @"Field1", //problem
                       firstName, @"Field3", //problem
                       lastName, @"Field4", 
                       activityArranged, @"Field10",
                       evidenceDescription, @"Field222", // problem
                       startDate, @"Field11", //Problem
                       endDate, @"Field224",
                       @"1", @"Field12", //Problem
                       benefitExplanation, @"Field113",
                       activityCategory, @"Field116",
                       webAddress, @"Field219",
                       @"I Agree", @"Field220", //Problem
                       nil];
   
        return d;
   }

-(void)submitForm {
            DiaryForm *df = [[DiaryForm alloc] init];
            [df submitForm:self params:[self getParameters]];
}
-(void)submitForm:(id)sender params:(NSDictionary *)params {
WufooAPIClient *client = [WufooAPIClient sharedClient];
    [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];
    [[AFNetworkActivityIndicatorManager sharedManager] incrementActivityCount];
    NSURLRequest *req = [client requestWithMethod:@"POST" path:@"entries.json" parameters:params];
    AFJSONRequestOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:req success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
        NSLog(@"Success?: %@\nError: %@\nFields: %@",[JSON objectForKey:@"Success"], [JSON objectForKey:@"ErrorText"], [JSON objectForKey:@"FieldErrors"]);
        
       
    }failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
        [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
        
        NSLog(@"[Error]: (%@ %@) %@", [request HTTPMethod], [[request URL] relativePath], error);
        
    }];
    [op start];

}
#import "WufooAPIClient.h"
#import "AFNetworking.h"


@implementation WufooAPIClient

+(WufooAPIClient *)sharedClient {
    static WufooAPIClient *_sharedClient = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        NSString *kProtocol = @"https";
        NSString *kSub = @"<removed>";
        NSString *kHost = @"wufoo.com";
        NSString *kHash = @"<removed>";
        NSString *sURL = [NSString stringWithFormat:@"%@://%@.%@/api/v3/forms/%@/", kProtocol, kSub, kHost, kHash];
        NSLog(sURL);
        NSURL *url = [NSURL URLWithString:sURL];
        _sharedClient = [[self alloc] initWithBaseURL:url];
    });
    return _sharedClient;
}

-(id)initWithBaseURL:(NSURL *)url {
    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }
    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];
    [self setDefaultHeader:@"Accept" value:@"application/json"];
    [self setAuthorizationHeaderWithUsername:@"<removed>" password:@"<removed>"];
    self.parameterEncoding = AFJSONParameterEncoding;
    
    return self;
}
WufooAPIClient.m

 -(NSDictionary *)getParameters {
   
        NSDictionary *d = [NSDictionary dictionaryWithObjectsAndKeys:
                       emailAddress, @"Field1", //problem
                       firstName, @"Field3", //problem
                       lastName, @"Field4", 
                       activityArranged, @"Field10",
                       evidenceDescription, @"Field222", // problem
                       startDate, @"Field11", //Problem
                       endDate, @"Field224",
                       @"1", @"Field12", //Problem
                       benefitExplanation, @"Field113",
                       activityCategory, @"Field116",
                       webAddress, @"Field219",
                       @"I Agree", @"Field220", //Problem
                       nil];
   
        return d;
   }

-(void)submitForm {
            DiaryForm *df = [[DiaryForm alloc] init];
            [df submitForm:self params:[self getParameters]];
}
-(void)submitForm:(id)sender params:(NSDictionary *)params {
WufooAPIClient *client = [WufooAPIClient sharedClient];
    [[AFNetworkActivityIndicatorManager sharedManager] setEnabled:YES];
    [[AFNetworkActivityIndicatorManager sharedManager] incrementActivityCount];
    NSURLRequest *req = [client requestWithMethod:@"POST" path:@"entries.json" parameters:params];
    AFJSONRequestOperation *op = [AFJSONRequestOperation JSONRequestOperationWithRequest:req success:^(NSURLRequest *request, NSHTTPURLResponse *response, id JSON) {
        [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
        NSLog(@"Success?: %@\nError: %@\nFields: %@",[JSON objectForKey:@"Success"], [JSON objectForKey:@"ErrorText"], [JSON objectForKey:@"FieldErrors"]);
        
       
    }failure:^(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error, id JSON) {
        [[AFNetworkActivityIndicatorManager sharedManager] decrementActivityCount];
        
        NSLog(@"[Error]: (%@ %@) %@", [request HTTPMethod], [[request URL] relativePath], error);
        
    }];
    [op start];

}
#import "WufooAPIClient.h"
#import "AFNetworking.h"


@implementation WufooAPIClient

+(WufooAPIClient *)sharedClient {
    static WufooAPIClient *_sharedClient = nil;
    static dispatch_once_t oncePredicate;
    dispatch_once(&oncePredicate, ^{
        NSString *kProtocol = @"https";
        NSString *kSub = @"<removed>";
        NSString *kHost = @"wufoo.com";
        NSString *kHash = @"<removed>";
        NSString *sURL = [NSString stringWithFormat:@"%@://%@.%@/api/v3/forms/%@/", kProtocol, kSub, kHost, kHash];
        NSLog(sURL);
        NSURL *url = [NSURL URLWithString:sURL];
        _sharedClient = [[self alloc] initWithBaseURL:url];
    });
    return _sharedClient;
}

-(id)initWithBaseURL:(NSURL *)url {
    self = [super initWithBaseURL:url];
    if (!self) {
        return nil;
    }
    [self registerHTTPOperationClass:[AFJSONRequestOperation class]];
    [self setDefaultHeader:@"Accept" value:@"application/json"];
    [self setAuthorizationHeaderWithUsername:@"<removed>" password:@"<removed>"];
    self.parameterEncoding = AFJSONParameterEncoding;
    
    return self;
}
#导入“WufooAPIClient.h”
#导入“AFNetworking.h”
@实现WufooAPIClient
+(WufooAPIClient*)共享客户端{
静态WufooAPIClient*\u sharedClient=nil;
静态调度一次预测;
一次发送(一次预测)^{
NSString*kProtocol=@“https”;
NSString*kSub=@;
NSString*kHost=@“wufoo.com”;
NSString*kHash=@;
NSString*sURL=[NSString stringWithFormat:@“%@:/%@.%@/api/v3/forms/%@”,kProtocol,kSub,霍斯特,哈什];
NSLog(sURL);
NSURL*url=[NSURL URLWithString:sURL];
_sharedClient=[[self alloc]initWithBaseURL:url];
});
返回共享客户;
}
-(id)initWithBaseURL:(NSURL*)url{
self=[super initWithBaseURL:url];
如果(!self){
返回零;
}
[self-registerHTTPOperationClass:[AFJSONRequestOperation class];
[self-setDefaultHeader:@“接受”值:@“应用程序/json”];
[self-setAuthorizationHeaderWithUsername:@”“password:@”“];
self.parameterEncoding=afjson参数编码;
回归自我;
}

@end

通过更改WufooAPIClient.m类initWithBaseURL:方法中的一行,修复了该问题

这:

致:

Wufoo的工作原理是发送HTTP POST数据,然后向您返回json或xml响应。我所做的是将发送的数据设置为JSON数据,而不是表单数据


希望这能帮助任何想做同样事情的人:)

我本想回来的——让我等24小时:)