zoukankan      html  css  js  c++  java
  • [转载]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];

  • 相关阅读:
    dell台式机网络唤醒
    今天学习到ROS的PCC的新的一种场景,用PCC不是为了带宽叠加而是为了换IP,PCC的标准做法
    默认ros安装好以后,可能对外开放的端口号,可能被黑客利用的地方,ros的0day漏洞
    ros-winbox利用防火墙安全登录,二次碰撞方法
    S5120V2-IRF2配置
    routeros ros mikrotik的ipsec配置,注意配置的步骤,以及哪些硬件支持哪种加速
    60岁-80岁老年人住院医疗险,既往症可理赔!家有长辈首选
    docker上2分钟安装mikrotik routeros
    pandas filter数据筛选
    (纪录片)光的故事 BBC Light Fantastic (2004)
  • 原文地址:https://www.cnblogs.com/worldtraveler/p/2823564.html
Copyright © 2011-2022 走看看