Публикация в yFrog objc - PullRequest
       48

Публикация в yFrog objc

0 голосов
/ 13 октября 2011

Я пытаюсь опубликовать изображения и видео в твиттере с помощью yFrog через мое приложение, но, кажется, ничего не происходит, когда я делаю запрос ... может кто-нибудь увидеть, что я делаю неправильно, или указать мне правильное направление?спасибо

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


}

Ответы [ 2 ]

1 голос
/ 13 октября 2011

Вы не реализуете методы обратного вызова делегата (по крайней мере, в приведенном выше коде). Я вижу, что вы устанавливаете self для делегата, но я не вижу обратных вызовов.Также убедитесь, что вы проверяете функцию обратного вызова с ошибкой

Вот методы обратного вызова делегата, которые необходимо реализовать:

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 голосов
/ 26 июля 2012

Мой 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];

}

В настроении делиться! Надеюсь, это поможет

...