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
];
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
];
相关文章推荐
- iPhone程序中将内容分享到新浪微博(zz)
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- [转载]iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- iPhone程序中将内容分享到新浪微博
- 分享网站内容到新浪微博
- unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)
- android 使用Intent.ACTION_SEND分享图片和文字内容(新浪微博,短信等)
- 分享一个用Xcode4实现基于Webservice用户登录的iphone程序
- unity3d利用sharesdk分享内容至微信、新浪微博、qq空间等国内主流社交平台(ios篇)
- (droid分享)新浪微博开发系列【九】之开发者信息显示和程序退出
- 微信小程序开发关于分享功能中怎么定义同一个页面中不同的按钮触发不同的分享内容,或者右上角的分享和页面中分享
- 浅谈高大上的微信小程序中渲染html内容―技术分享
- 在WPF程序中将控件所呈现的内容保存成图像
- 分享一个用Xcode4实现基于Webservice用户登录的iphone程序
- 分享iPhone判断程序运行设备的代码