In my app i integrated FHSTwitterEngine for posting images in twitter. Till last week it is working fine. But all of a sudden, while trying to post an image it is showing 204 Error
Domain=FHSErrorDomain Code=204 "The request did not return any content."
i don't think that it is an issue with duplicate post, because image will change according to user selection and while trying to post image first time itself it is giving the error.
Text based tweets are working properly. problem is with image posting only
code i am using
dispatch_async(GCDBackgroundThread, ^{
@autoreleasepool {
NSError *returnCode = [[FHSTwitterEngine sharedEngine]postTweet:self.textToTweet withImageData:UIImagePNGRepresentation(tweetImg)];
NSString *title = nil;
NSString *message = nil;
if (returnCode) {
NSLog("Error-->%d",returnCode.code);
} else {
title = @"Tweet Posted";
message = @"Successfully";
}
}
});
Thanks in advance
It's a malformed multipart form data problem.
Take a look at FHSTwitterEngine.m.
Look for these lines
- (NSError *)sendPOSTRequestForURL:(NSURL *)url andParams:(NSDictionary *)params
...
[body appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"\r\n",key] dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[body appendData:data];
Add these lines below it
if ([obj isKindOfClass:[NSData class]]) {
[body appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
}
I also noticed that it has missing status params bug.
Look for
- (NSError *)postTweet:(NSString *)tweetString withImageData:(NSData *)theData inReplyTo:(NSString *)irt {
...
NSMutableDictionary *params = [NSMutableDictionary dictionary];
params[@"media[]"] = theData;
And add this
params[@"status"] = tweetString;
Or you could get the fixes here: https://github.com/alvani/FHSTwitterEngine/blob/master/FHSTwitterEngine/FHSTwitterEngine.m
Thanks.