iphone - pwa - Publicar en yFrog objc
web app ipad (2)
Estoy tratando de publicar imágenes y videos en Twitter con yFrog a través de mi aplicación, pero parece que no ocurre nada cuando hago la solicitud ... ¿alguien puede ver lo que estoy haciendo mal o apuntarme en la dirección correcta? gracias
-(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");
}
}
Mi XMLParser a continuación
//
// 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
En tu Delegado haz algo de esta naturaleza
-(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];
}
En el ánimo de compartir! Espero que esto ayude
No está implementando los métodos de devolución de llamada de delegado (al menos en el código anterior). Veo que se asigna al delegado, pero no veo las devoluciones de llamada. Asegúrate también de verificar la devolución de llamada por error
Aquí están los métodos de devolución de delegado que debe implementar:
didFailWithError es el más grande si tienes problemas. asegúrese de leer todos los datos de NSError y, como mínimo, registrarlo.
Por ejemplo:
- (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");
}