您的位置:首页 > 其它

iPhone程序中将内容分享到新浪微博

2011-04-21 15:40 239 查看
因为要用到,所以找来,和大家分享:

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

alloc
]
initWithURL
: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

alloc
]
initWithTitle
:alertTitle

message
:alertMassage

delegate
:
nil

cancelButtonTitle
:
@"
确定
"

otherButtonTitles
:
nil
];

[alert
show
];

[alert
release
];

3.
将内容(图片

文字)发送到新浪微博

NSString
*authString
= [
NSString

stringWithFormat
:
@"%@:%@"
,[[
NSUserDefaults

standardUserDefaults
]
objectForKey
:
@"sinaID"
],[[
NSUserDefaults

standardUserDefaults
]
objectForKey
:
@"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
:
@"--%@/r/n"
,
boundary];

NSString
*bodySuffixString =
[
NSString

stringWithFormat
:
@"/r/n--%@--/r/n"
,
boundary];

NSString
*contentDisposition
= [
NSString

stringWithFormat
:
@"Content-Disposition:
form-data; name="pic"; filename="%@"/r/n"
,
filename];

NSString
*contentImageType =
[
NSString

stringWithFormat
:
@"Content-Type:
image/%@/r/n"
,
[filename
pathExtension
]];

NSString
*contentTransfer
=
@"Content-Transfer-Encoding:
binary/r/n/r/n"
;

NSString
*bodyUpdateField
= [
NSString

stringWithFormat
:
@"Content-Disposition:
form-data;name="status"/r/n/r/n%@/r/n"
,[
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

alloc
]
initWithURL
: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

alloc
]
initWithData
: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

alloc
]
initWithTitle
:
@""

message
:message

delegate
:
self

cancelButtonTitle
:
@"
确定
"

otherButtonTitles
:
nil
];

[alert
show
];

[alert
release
];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: