• [转载]iPhone程序中将内容分享到新浪微博


    因为要用到,所以找来,和大家分享:

    1. 首先在http://open.t.sina.com.cn/中申请成为开发者,再创建不同的应用,获得相应的App Key (在下面链接中的source即为app key)

     

    2. 登录认证:

    NSString *authString = [NSString stringWithFormat:@"%@:%@",sinaIDField.text,sinaPasswordField.text];

    NSData *authData = [authString dataUsingEncoding:NSUTF8StringEncoding];

    NSString *authValue = [NSString stringWithFormat:@"Basic %@",[authData base64EncodingWithLineLength:80]];

     

    NSURL *url = [NSURL URLWithString:@"http://api.t.sina.com.cn/account/verify_credentials.xml?source=3930264715"];

    NSMutableURLRequest *request = [[NSMutableURLRequest allocinitWithURL:url];

    [request setHTTPMethod:@"GET"];

    [request setValue:authValue forHTTPHeaderField:@"Authorization"];

     

    NSURLResponse *response;

    NSError *error;

     

    [NSURLConnection sendSynchronousRequest:request returningResponse:&response error:&error];

     

    [request release];

     

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)response;

     

    int statusCode = [httpResponse statusCode];

     

    NSLog(@"status code = %d",statusCode);

     

    if (statusCode != 200) {

    alertTitle = @"帐号或密码错误";

    alertMassage = @"请您输入正确的帐号和密码!";

    }else {

    alertTitle = @"";

    alertMassage = @"登录成功!";

    }

    }

    UIAlertView *alert = [[UIAlertView allocinitWithTitle:alertTitle

    message:alertMassage

    delegate:nil cancelButtonTitle:@"确定"

    otherButtonTitles:nil];

    [alert show];

    [alert release];

     

     

    3.将内容(图片 文字)发送到新浪微博

    NSString *authString = [NSString stringWithFormat:@"%@:%@",[[NSUserDefaults standardUserDefaultsobjectForKey:@"sinaID"],[[NSUserDefaults standardUserDefaultsobjectForKey:@"sinaPassword"]];

    NSData *authData = [authString dataUsingEncoding:NSUTF8StringEncoding];

    NSString *authValue = [NSString stringWithFormat:@"Basic %@",[authData base64EncodingWithLineLength:80]];

     

     

    NSString *boundary = @"0xKhTmLbOuNdArYckkk";

    NSString *filename = @"test.jpg";

     

    NSData *imageData = UIImageJPEGRepresentation(shareImage,1);

     

     

    NSString *bodyPrefixString = [NSString stringWithFormat:@"--%@rn", boundary];

    NSString *bodySuffixString = [NSString stringWithFormat:@"rn--%@--rn", boundary];

    NSString *contentDisposition = [NSString stringWithFormat:@"Content-Disposition: form-data; name="pic"; filename="%@"rn", filename];

    NSString *contentImageType = [NSString stringWithFormat:@"Content-Type: image/%@rn", [filename pathExtension]];

    NSString *contentTransfer @"Content-Transfer-Encoding: binaryrnrn";

     

    NSString *bodyUpdateField = [NSString stringWithFormat:@"Content-Disposition: form-data;name="status"rnrn%@rn",[NSString stringWithFormat:@"%@",textView.text]];

    NSMutableData *postBody = [NSMutableData data];

     

    [postBody appendData:[bodyPrefixString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]];

    [postBody appendData:[bodyUpdateField dataUsingEncoding:NSUTF8StringEncoding ]];

    [postBody appendData:[bodyPrefixString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]];

    [postBody appendData:[contentDisposition dataUsingEncoding:NSUTF8StringEncoding ]];

    [postBody appendData:[contentImageType dataUsingEncoding:NSUTF8StringEncoding ]];

    [postBody appendData:[contentTransfer dataUsingEncoding:NSUTF8StringEncoding]];

    [postBody appendData:imageData];

    [postBody appendData:[bodySuffixString dataUsingEncoding:NSUTF8StringEncoding allowLossyConversion:NO]];

     

     

    NSString *baseURL = [NSString stringWithFormat:@"http://api.t.sina.com.cn/statuses/upload.xml?source=3930264715"];

    NSURL *url = [NSURL URLWithString:baseURL];

    NSMutableURLRequest *mainRequest = [[NSMutableURLRequest allocinitWithURL:url

    cachePolicy:NSURLRequestUseProtocolCachePolicy

    timeoutInterval:30.0f];

     

    [mainRequest setHTTPMethod:@"POST"];

    [mainRequest setValue:authValue forHTTPHeaderField:@"Authorization"];

    NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@", boundary, nil];

    [mainRequest setValue:contentType forHTTPHeaderField:@"Content-Type"];

    [mainRequest setHTTPBody:postBody];

     

    NSURLResponse *shareResponse;

    NSError *error;

     

    NSData *responseData = [NSURLConnection sendSynchronousRequest:mainRequest returningResponse:&shareResponse error:&error];

    NSString *responseString = [[NSString allocinitWithData:responseData encoding:NSUTF8StringEncoding];

     

    NSHTTPURLResponse *httpResponse = (NSHTTPURLResponse *)shareResponse;

     

    int statusCode = [httpResponse statusCode];

     

    NSLog(@"status code = %d",statusCode);

     

    BOOL succeed = NO;

    if (statusCode == 200) {

    succeed = YES;

    }

    [mainRequest release];

     

     

    NSLog(@"response string : %@",responseString);

     

    [responseString release];

     

    [uploadWaiting stopAnimating];

     

    NSString *message = nil;

    if (succeed) {

    message = @"分享成功";

    }else {

    message = @"分享失败";

    }

    UIAlertView *alert = [[UIAlertView allocinitWithTitle:@"" message:message

    delegate:self

    cancelButtonTitle:@"确定" otherButtonTitles:nil];

    [alert show];

    [alert release];

  • 相关阅读:
    Linux centosVMware Linux监控平台介绍、zabbix监控介绍、安装zabbix、忘记Admin密码如何做
    Linux centosVMware Linux集群架构LVS DR模式搭建、keepalived + LVS
    Linux centosVMware 集群介绍、keepalived介绍、用keepalived配置高可用集群
    Linux centosVMware 配置Tomcat监听80端口、配置Tomcat虚拟主机、Tomcat日志
    Linux centosVMware Tomcat介绍、安装jdk、安装Tomcat
    Linux centosVMware xshell使用xftp传输文件、使用pure-ftpd搭建ftp服务
    Linux centosVMware NFS介绍、NFS服务端安装配置、NFS配置选项
    Linux centosVMware NFS exportfs命令、NFS客户端问题、FTP介绍、使用vsftpd搭建ftp
    Linux centosVMware mysql用户管理、常用sql语句、mysql数据库备份恢复
    Linux centosVMware MySQL常用操作设置更改root密码、连接mysql、mysql常用命令
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/2823564.html
Copyright © 2020-2023  润新知