【问题标题】:MGTwitterEngine - isUser:receivingUpdatesFor: always return HTTP error 400?MGTwitterEngine - isUser:receivingUpdatesFor: 总是返回 HTTP 错误 400?
【发布时间】:2011-04-11 16:00:46
【问题描述】:

我在从 MGTwitterEngine 实现方法 isUser:receivingUpdatesFor: 以检查用户是否在 Twitter 上关注另一个用户时遇到了一些问题。这是我的代码:

//Here is how I call the method (isRequestIdentifier is an NSString declare in the .h)
isRequestIdentifier = [[twitterEngine isUser:user1 receivingUpdatesFor:user2] retain];
NSLog(@"user1 : %@ - user2 : %@", user1, user2);
NSLog(@"isRequestIdentifier : %@",isRequestIdentifier);

#pragma mark TwitterEngineDelegate

- (void) requestSucceeded: (NSString *) requestIdentifier {
    if ([requestIdentifier isEqualToString:isRequestIdentifier]) {
        NSLog(@"Request isRequestIdentifier %@ succeeded", requestIdentifier);
    }
}

- (void) requestFailed: (NSString *) requestIdentifier withError: (NSError *) error {
    if ([requestIdentifier isEqualToString:isRequestIdentifier]) {
        NSLog(@"Request isRequestIdentifier : %@ failed with error: %@", requestIdentifier, error);
    }
}

它似乎有效,但即使我确定 user1 正在关注 user2,我的请求也总是失败,这是日志消息:

请求 isRequestIdentifier : E8284E63-A5B0-4C18-A3DB-B4F0A5E6048E 失败并出现错误:Error Domain=HTTP Code=400 “无法完成操作。(HTTP 错误 400。)”

知道我做错了什么吗?

感谢您的帮助。

【问题讨论】:

    标签: iphone objective-c twitter mgtwitterengine


    【解决方案1】:

    我想通了:)!

    转到 MGTwitterEngine.m 并查找以下声明:

    • (NSString *)isUser:(NSString *)username1 接收UpdatesFor:(NSString *)username2

    你会发现这个代码:

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithCapacity:0];
    [params setObject:username1 forKey:@"user_a"];
    [params setObject:username2 forKey:@"user_b"];
    
    NSString *path = [NSString stringWithFormat:@"friendships/exists.%@", API_FORMAT];
    

    这会导致问题,因为获取路径的“下一个”函数不会将参数写入 url,这就是我们收到 400 Bad Request 错误的原因。

    我所做的“快速而肮脏”的修复是注释所有这些行并添加:

    NSString *path = [NSString stringWithFormat:@"friendships/exists.%@?user_a=%@&user_b=%@", API_FORMAT, username1, username2];
    

    完美无瑕!

    【讨论】:

    • @zhwtz12345 该特定请求在委托回调中返回:- (void)miscInfoReceived:(NSArray *)statuses forRequest:(NSString *)requestIdentifier;
    • 我做了你建议的改变,但是这一行: NSLog(@"%@", [twitterOBJ isUser:@"username1" receivedUpdatesFor:@"username2"]);仍然打印类似:“8D9EEC59-485F-437C-8E33-CC48AC370E05”
    • 可能一切都变了,这是 2 年前 :S
    猜你喜欢
    • 2021-12-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多