0

ASIFormDataRequestを使用して、URL、タイトル、および要約の3つの値を投稿しています。それらはすべてシミュレータでは正常に動作しますが、デバイスでは動作しません。これが私が使用しているコードです:

- (IBAction)addLinkPressed:(UIButton *)sender {

    ASIFormDataRequest *loginRequest = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:@"http://MyWebsite.com/login.php"]];
    [loginRequest setRequestMethod:@"POST"];
    [loginRequest setPostValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultUsername"] forKey:@"username"];
    [loginRequest setPostValue:[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPassword"] forKey:@"password"];
    [loginRequest setUseKeychainPersistence:YES];
    [loginRequest setDelegate:self];

    [loginRequest setDidFinishSelector:@selector(requestLoginFinished:)];
    [loginRequest setDidFailSelector:@selector(requestLoginFailed:)];
    [loginRequest startSynchronous];



    NSString *strURL = @"http://MyWebsite.com/send_link.php";
    ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:[NSURL URLWithString:strURL]];
    [request setDelegate:self];
    [request setPostValue:self.linkField.text forKey:@"url"];
    [request setPostValue:self.linkTitleField.text forKey:@"title"];
    [request setPostValue:self.linkSummaryField.text forKey:@"summary"];

    [request setDidFinishSelector:@selector(requestDone:)];
    [request setDidFailSelector:@selector(requestWentWrong:)];
    [request startAsynchronous];
}

誰でも助けてくれます!

4

1 に答える 1

2

まず第一に:ASIRequestはサポートされなくなりました。場合によってはバグがあることが知られており、バグは修正されません。

2つ目は、あなたの質問に関して、エラーが発生する可能性のある2つの場所(シミュレータとデバイスの違い)があります。

  1. デバイス上で正しく設定されていることを確認し[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultUsername"]ます[[NSUserDefaults standardUserDefaults] objectForKey:@"defaultPassword"]か?

  2. iOSシミュレーターでは、キーチェーンにアクセスできないため、この設定([loginRequest setUseKeychainPersistence:YES];)はデバイスでも問題を引き起こす可能性があります。

NSUserDefaults別の1つのフレームワーク、つまりRestKitを確認してより適切に使用することをお勧めします

編集:

RestKitの使用例:

[RKClient clientWithBaseURLString:@"http://example.com"];
RKClient *rkclient = [RKClient sharedClient];
RKParams *params = [RKParams paramsWithDictionary:[NSDictionary dictionaryWithObjectsAndKeys:
                                                   username, @"username",
                                                   password, @"password", nil]];
[rkclient post:@"/profile" params:params delegate:self];

// implement needed delegate methods
于 2012-09-03T06:44:01.490 に答える