我正在制作一个iPhone应用程序,需要与Sendy进行通信。我相信它使用了某种JSON,但我不太确定,也不知道从哪里开始。我对API的subscribe部分特别感兴趣。基本上,我需要知道如何从我的应用程序.中与Sendy对话。
任何帮助都是非常感谢的。
我的代码:
- (IBAction)submitButtonPressed:(id)sender
{
self.data = [[NSMutableData alloc] initWithLength:0];
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:@"http://www.erwaysoftware.com/sendy/subscribe"]];
[request setHTTPMethod:@"POST"];
[request setValue:@"john@test.com" forHTTPHeaderField:@"email"];
[request setValue:@"john" forHTTPHeaderField:@"name"];
[request setValue:@"LxxxxxxxxxxxxxxxxxxxxQ" forHTTPHeaderField:@"list"];
[request setValue:@"true" forHTTPHeaderField:@"boolean"];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:request delegate:self];
[conn start];
}
- (void)connection:(NSURLConnection *)connection didReceiveResponse:(NSURLResponse *)response {
[self.data setLength:0];
}
- (void)connection:(NSURLConnection *)connection didReceiveData:(NSData *)d {
[self.data appendData:d];
}
- (void)connection:(NSURLConnection *)connection didFailWithError:(NSError *)error {
[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Error", @"")
message:[error localizedDescription]
delegate:nil
cancelButtonTitle:NSLocalizedString(@"OK", @"")
otherButtonTitles:nil] show];
}
- (void)connectionDidFinishLoading:(NSURLConnection *)connection {
NSString *responseText = [[NSString alloc] initWithData:self.data encoding:NSUTF8StringEncoding];
// Do anything you want with it
NSLog(@"%@", responseText);
}当日志发生时,字符串为空。我通过断点知道最后一个方法被调用。
发布于 2013-04-04 21:01:56
从API来看,这都是纯文本响应。
因为它是一篇文章,所以您可以使用NSURLConnection来编写请求。有关格式化响应的信息,请参见这个问题。
另一种选择是使用像AFNetworking或RestKit这样的东西,如果您使用API做更多的工作,这可能会更友好一些。
发布于 2014-03-02 05:29:51
我猜你已经解决了这个问题,但是如果其他人被困在这里(就像我一样),我想我应该把我做过的事情发出去。
您需要做的第一件事是创建一个名为NSString+URLEncoding (或其他什么)的类别,它将从blah@blah.com中获取您的电子邮件和姓名字段,并将其转换为blah%40blah.com。我从方便的博客文章中修改了这个发现这里
@interface NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding;
@end
#import "NSString+URLEncoding.h"
@implementation NSString (URLEncoding)
-(NSString *)urlEncodeUsingEncoding:(NSStringEncoding)encoding {
return (NSString *)CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(NULL,
(CFStringRef)self,
NULL,
(CFStringRef)@"!*'\"();:@&=+$,/?%#[]% ",
CFStringConvertNSStringEncodingToEncoding(encoding)));}
@end好的,现在只需导入NSString+URLEncoding.h并添加以下代码,您就可以开始工作了。这个帖子帮助我完成了这个部分
- (IBAction)submitButtonPressed:(id)sender
{
NSMutableURLRequest *newRequest = [[NSMutableURLRequest alloc]initWithURL:[NSURL URLWithString:@"http://stashdapp.com/sendy/subscribe"]];
[newRequest setHTTPMethod:@"POST"];
[newRequest setValue:@"application/x-www-form-urlencoded; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
NSString *email = @"name@domain.com";
NSString *name = @"First Lastname";
NSString *list = @"XXXXXXXXXXXXXXXXXX";
NSString *postData = [NSString stringWithFormat:@"email=%@&boolean=true&name=%@&list=%@", [email urlEncodeUsingEncoding:NSUTF8StringEncoding],[name urlEncodeUsingEncoding:NSUTF8StringEncoding],list];
[newRequest setHTTPBody:[postData dataUsingEncoding:NSUTF8StringEncoding]];
NSURLConnection *conn = [NSURLConnection connectionWithRequest:newRequest delegate:self];
[conn start];
}您仍然包括您在问题中引用的委托方法。
希望它能帮到别人!
https://stackoverflow.com/questions/15821452
复制相似问题