我正试图通过我的应用程序将图像和视频发布到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");
}
}
答案 0 :(得分:1)
您没有实现委托回调方法(至少在上面的代码中)我看到您将自己设置为委托但我没有看到回调。还要确保您正在检查错误回调
以下是您需要实现的委托回调方法:
如果您遇到问题,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");
}
答案 1 :(得分:0)
我的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];
}
分享的心情!希望这有帮助