I wanna make function that update profile image with XAuth on iPhone.
but I'm not good at HTTP POST METHOD.
so... anybody.. could you confirm for me whether this Form is right?
The code is like below(I refered this site. and add sendDataReQuest
function http://github.com/aral/XAuthTwitterEngine)
- (NSString *)_sendDataRequestWithMethod:(NSString *)method
path:(NSString *)path
queryParameters:(NSDictionary *)params
fileData:(NSData *)fileData
body:(NSString *)body
requestType:
(MGTwitterRequestType)requestType
responseType:
(MGTwitterResponseType)responseType
{
NSString *fullPath = path;
NSString *urlString = [NSString stringWithFormat:@"%@://%@/%@",
(_secureConnection) ? @"https" : @"http",
_APIDomain, fullPath];
NSLog(@"%@",fullPath);
NSURL *finalURL = [NSURL URLWithString:urlString];
if (!finalURL) {
return nil;
}
if (![self isAuthorized])
{
return nil;
}
NSLog(@"About to carry out request with access token: %@",
_accessToken);
OAMutableURLRequest *theRequest = [[[OAMutableURLRequest alloc]
initWithURL:finalURL
consumer:self.consumer
token:_accessToken
realm: nil
signatureProvider:nil] autorelease];
if (method) {
[theRequest setHTTPMethod:method];
}
[theRequest setHTTPShouldHandleCookies:NO];
// Set headers for client information, for tracking purposes at
Twitter.
[theRequest setValue:_clientName forHTTPHeaderField:@"X-Twitter-
Client"];
[theRequest setValue:_clientVersion forHTTPHeaderField:@"X-Twitter-
Client-Version"];
[theRequest setValue:_clientURL forHTTPHeaderField:@"X-Twitter-
Client-URL"];
/*
NSMutableURLRequest *theRequest = [self
_baseRequestWithMethod:method
path:path
requestType:requestType
queryParameters:params];
*/
BOOL isPOST = (method && [method isEqualToString:@"POST"]);
if (isPOST) {
NSLog(@"This is XEngin Posting Method!");
NSString *boundary = @"0xKhTmLbOuNdArY";
NSString *filename = @"image.png";
NSString *bodyPrefixString = [NSString stringWithFormat:@"--
%...@\r\n", boundary];
NSString *bodySuffixString = [NSString stringWithFormat:@"\r
\n...@--\r\n", boundary];
NSString *contentDisposition = [NSString
stringWithFormat:@"Content-Disposition: form-data; name=\"image\";
filename=\"%...@\"\r\n", filename];
NSString *contentImageType = [NSString
stringWithFormat:@"Content-Type: image/%...@\r\n", [filename
pathExtension]];
NSString *contentTransfer = @"Content-Transfer-Encoding:
binary\r\n\r\n";
NSMutableData *postBody = [NSMutableData data];
[postBody appendData:[bodyPrefixString
dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]];
[postBody appendData:[contentDisposition
dataUsingEncoding:NSUTF8StringEncoding ]];
[postBody appendData:[contentImageType
dataUsingEncoding:NSUTF8StringEncoding ]];
[postBody appendData:[contentTransfer
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:fileData];
[postBody appendData:[bodySuffixString
dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]];
[theRequest setHTTPBody:postBody];
NSString *contentType = [NSString stringWithFormat:@"multipart/
form-data; boundary=%@", boundary, nil];
[theRequest setValue:contentType forHTTPHeaderField:@"Content-
Type"];
}
MGTwitterHTTPURLConnection *connection;
connection = [[MGTwitterHTTPURLConnection alloc]
initWithRequest:theRequest
delegate:self
requestType:requestType
responseType:responseType];
if (!connection) {
return nil;
} else {
[_connections setObject:connection forKey:[connection
identifier]];
[connection release];
}
NSLog(@"\nsending request...\t%@", [connection identifier]);
return [connection identifier];
}