发布到yFrog objc [英] Posting to yFrog objc

查看:79
本文介绍了发布到yFrog objc的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过yFrog在我的应用程序中将图像和视频发布到Twitter,但是当我发出请求时似乎什么也没有发生……任何人都可以看到我做错了什么或将我指向正确的方向吗?谢谢

I am trying to post images and videos to twitter with yFrog through my application, but nothing seems to even happen when I make the request... can anyone see what I am doing wrong or point me in the right direction? thank you

-(IBAction)yFrogToTwitter
{

// create the URL

//used to render bigger images videos
//NSURL *postURL = [NSURL URLWithString:@"http://render.imageshack.us/renderapi/start"];
//below is used to directly upload to twitter
 NSURL *postURL = [NSURL URLWithString:@"http://yfrog.com/api/uploadAndPost"];


// create the connection
NSMutableURLRequest *postRequest = [NSMutableURLRequest requestWithURL:postURL

cachePolicy:NSURLRequestUseProtocolCachePolicy
                                                       timeoutInterval:30.0];

// change type to POST (default is GET)
[postRequest setHTTPMethod:@"POST"];



// create data
NSMutableData *postBody = [NSMutableData data];

//NSString *media = PickedImage.image;
NSString *username = twitterEngine.username;
NSString *password = twitterEngine.password;
NSString *message = TweetBody.text;
NSString *source = @"ThemeCatcher";
NSString *api_key= kYFrogKey;

// just some random text that will never occur in the body
NSString *stringBoundary = @"0xKhTmLbOuNdArY---This_Is_ThE_BoUnDaRyy---pqo";
// header value
NSString *headerBoundary = [NSString stringWithFormat:@"multipart/form-data; 
boundary=%@",stringBoundary];
// set header
[postRequest addValue:headerBoundary forHTTPHeaderField:@"Content-Type"];

// username part
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; 
name=\"username\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[username dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

// password part
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; 
name=\"password\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[password dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


// api_key
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; 
name=\"key\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[api_key dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


// message part
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; 
name=\"message\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[message dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];


// source part
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[[NSString stringWithString:@"Content-Disposition: form-data; 
name=\"source\"\r\n\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[source dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];    


// media part
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Disposition: form-data; name=\"media\"; 
filename=\"fish.jpg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Type: image/jpeg\r\n" 
dataUsingEncoding:NSUTF8StringEncoding]];
[postBody appendData:[@"Content-Transfer-Encoding: binary\r\n\r\n" 
dataUsingEncoding:NSUTF8StringEncoding]];


 NSData *imageData = UIImagePNGRepresentation(PickedImage.image);


// add Image to body
[postBody appendData:imageData];
[postBody appendData:[@"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];

// final boundary
[postBody appendData:[[NSString stringWithFormat:@"--%@\r\n", stringBoundary] 
dataUsingEncoding:NSUTF8StringEncoding]];


// add body to post
[postRequest setHTTPBody:postBody];

// pointers to some necessary objects
//NSURLResponse* response;
//NSError* error;

[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];

NSURLConnection *theConnection = [[NSURLConnection alloc] initWithRequest:postRequest 
delegate:self];

if( theConnection )
{
   webData = [[NSMutableData data] retain];
}
else
{
    NSLog(@"theConnection is NULL");
}


}

推荐答案

您没有实现委托回调方法(至少在上面的代码中),我看到您将self设置为委托,但没有看到回调.还要确保您正在检查错误回调

You're not implementing the delegate call back methods (at least in the code above) I see you setting self to the delegate but I don't see the callbacks. Also ensure that you're checking the error callback

这是您需要实现的委托回调方法:

Here's the delegate callback methods you need to implement:

didFailWithError是大问题.确保您已读取所有NSError数据,并至少将其记录下来.

didFailWithError is the big one if you're having issues. make sure you read all the NSError data and at a minimum log it.

例如:

- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)data {
    [responseData appendData:data];
}

- (void) connectionDidFinishLoading:(NSURLConnection *)connection {
    [connection release];

    NSString* responseString = [[NSString alloc] initWithData:responseData     encoding:NSUTF8StringEncoding];
    NSLog(@"result: %@", responseString);

    [responseString release];
}

- (void) connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
       NSLog(@"error - read error object for details");
}

这篇关于发布到yFrog objc的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆