发布至yFrog objc

问题描述:

我想张贴的图片和视频,通过我的应用程序使用yFrog到Twitter,但似乎没有发生,甚至当我做出的请求......任何人都可以看到我在做什么错或点我在正确的方向?谢谢发布至yFrog objc

-(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"); 
} 


} 
+1

如果答案是错误的或者部分正确的,请将您的意见,用户谁回答你的问题,使他们能够改善自己的答案。谢谢。 –

+0

谢谢。我会尽力在这里做我的一部分,因为我爱#1,并希望我做什么或没有通过这个冒犯任何人。我只是在做我认为正确的事情,但是完全得到你们两位的支持,并且将在未来的所有问题中牢记这一点。 – FreeAppl3

+0

当然没有 - 大家的帮助你,因此SO。 THX – bryanmac

您不打算委托回调方法(至少在上面的代码中),我看你自己设定的委托,但我看不到回调。另外,还要确保你正在检查的错误回调

这里有您需要实现委托回调方法:

http://developer.apple.com/library/mac/#documentation/Foundation/Reference/NSURLConnectionDelegate_Protocol/Reference/Reference.html#//apple_ref/occ/intf/NSURLConnectionDelegate

didFailWithError是如果你有问题的大单。确保你阅读了所有的NSError数据并至少记录下它。

例如:

- (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"); 
} 
+0

你总是似乎知道如何帮助我!非常感谢!!!它现在给了我一个请求,我想我必须抓住它并将网址放在一个主体中,然后张贴到Twitter上。谢谢你,我会花费数天时间试图弄清楚这一点。 – FreeAppl3

+0

我站好了。如果您查看编辑后的代码,我将显示用于yfrog的不同xml标注。只是以为我会发布,如果有人在这寻找答案绊倒。 – FreeAppl3

我XMLParser的下面

// 
// yFrogParser.h 
// PreviewMaker 
// 
// Created by Anthony Cornell on 4/12/12. 
// Copyright (c) 2012 iDevice Designs. All rights reserved. 
// 

#import <Foundation/Foundation.h> 
#import "yFrogObject.h" 

@interface yFrogParser : NSObject<NSXMLParserDelegate>{ 

NSMutableData *recivedData; 
NSMutableArray *imageInfo; 
NSMutableString *currentNodeContent; 
NSXMLParser  *parser; 

yFrogObject *imageObjects; 
NSMutableArray *imageArray; 

} 

@property (readonly, retain) NSMutableArray *imageInfo; 
@property (nonatomic, retain) NSMutableArray *imageArray; 
@property (nonatomic, retain) NSMutableData *recivedData; 

-(id) loadXMLByData:(NSMutableData *)data; 

@end 



// 
// yFrogParser.m 
// PreviewMaker 
// 
// Created by Anthony Cornell on 4/12/12. 
// Copyright (c) 2012 iDevice Designs. All rights reserved. 
// 

#import "yFrogParser.h" 

@implementation yFrogParser 

@synthesize imageInfo,imageArray,recivedData; 

-(id) loadXMLByData:(NSMutableData *)data{ 


imageArray   = [[NSMutableArray alloc] init]; 
recivedData = [[NSMutableData alloc]initWithData:data]; 
parser   = [[NSXMLParser alloc] initWithData:recivedData]; 
parser.delegate = self; 
[parser parse]; 

return self;  

} 
- (void) parser:(NSXMLParser *)parser didStartElement:(NSString *)elementname 
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
attributes:(NSDictionary *)attributeDict 
{ 


if ([elementname isEqualToString:@"links"]) 
{ 
    imageObjects = [yFrogObject alloc]; 

} 
} 

- (void) parser:(NSXMLParser *)parser didEndElement:(NSString *)elementName  
namespaceURI:(NSString *)namespaceURI qualifiedName:(NSString *)qName 
{ 

if ([elementName isEqualToString:@"image_link"]) { 

    imageObjects.responceURL = currentNodeContent; 
} 

if ([elementName isEqualToString:@"image_bb"]) { 

    imageObjects.forumUrl = currentNodeContent; 
    // NSLog(@"image forum url %@",currentNodeContent); 
}  


if ([elementName isEqualToString:@"links"]) 
{ 
    [imageArray addObject:imageObjects]; 
    [imageObjects release]; 
    imageObjects = nil; 
    [currentNodeContent release]; 
    currentNodeContent = nil; 

} 
} 



- (void) parser:(NSXMLParser *)parser foundCharacters:(NSString *)string 
{ 
currentNodeContent = (NSMutableString *) [string  
              stringByTrimmingCharactersInSet:[NSCharacterSet  
whitespaceAndNewlineCharacterSet]]; 
} 


@end 

在您的委托做到这一点自然

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


parser = [[yFrogParser alloc]init]; 
[parser loadXMLByData:webData]; 

yFrogObject *object = [[parser imageArray]objectAtIndex:0]; 



NSString* responseString = [[NSString alloc] initWithData:webData 
encoding:NSUTF8StringEncoding]; 

//NSLog(@"Parser result: %@", [object responceURL]); 
//NSLog(@"yFrog responce results: %@", responseString); 

[responseString release]; 

} 

在分享心情的东西!希望这有助于