单军华
2018-07-11 7b02207537d35bfa1714bf8beafc921f717d100a
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
//
//  WBHttpRequest.h
//  WeiboSDK
//
//  Created by DannionQiu on 14-9-18.
//  Copyright (c) 2014年 SINA iOS Team. All rights reserved.
//
 
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
 
#pragma mark - WBHttpRequest and WBHttpRequestDelegate
@class WBHttpRequest;
 
/**
 接收并处理来自微博sdk对于网络请求接口的调用响应 以及logOutWithToken的请求
 */
@protocol WBHttpRequestDelegate <NSObject>
 
/**
 收到一个来自微博Http请求的响应
 
 @param response 具体的响应对象
 */
@optional
- (void)request:(WBHttpRequest *)request didReceiveResponse:(NSURLResponse *)response;
 
/**
 收到一个来自微博Http请求失败的响应
 
 @param error 错误信息
 */
@optional
- (void)request:(WBHttpRequest *)request didFailWithError:(NSError *)error;
 
/**
 收到一个来自微博Http请求的网络返回
 
 @param result 请求返回结果
 */
@optional
- (void)request:(WBHttpRequest *)request didFinishLoadingWithResult:(NSString *)result;
 
/**
 收到一个来自微博Http请求的网络返回
 
 @param data 请求返回结果
 */
@optional
- (void)request:(WBHttpRequest *)request didFinishLoadingWithDataResult:(NSData *)data;
 
/**
 收到快速SSO授权的重定向
 
 @param URI
 */
@optional
- (void)request:(WBHttpRequest *)request didReciveRedirectResponseWithURI:(NSURL *)redirectUrl;
 
@end
 
 
/**
 微博封装Http请求的消息结构
 
 */
@interface WBHttpRequest : NSObject
{
    NSURLConnection                 *connection;
    NSMutableData                   *responseData;
}
 
/**
 用户自定义请求地址URL
 */
@property (nonatomic, strong) NSString *url;
 
/**
 用户自定义请求方式
 
 支持"GET" "POST"
 */
@property (nonatomic, strong) NSString *httpMethod;
 
/**
 用户自定义请求参数字典
 */
@property (nonatomic, strong) NSDictionary *params;
 
/**
 WBHttpRequestDelegate对象,用于接收微博SDK对于发起的接口请求的请求的响应
 */
@property (nonatomic, weak) id<WBHttpRequestDelegate> delegate;
 
/**
 用户自定义TAG
 
 用于区分回调Request
 */
@property (nonatomic, strong) NSString* tag;
 
/**
 统一HTTP请求接口
 调用此接口后,将发送一个HTTP网络请求
 @param url 请求url地址
 @param httpMethod  支持"GET" "POST"
 @param params 向接口传递的参数结构
 @param delegate WBHttpRequestDelegate对象,用于接收微博SDK对于发起的接口请求的请求的响应
 @param tag 用户自定义TAG,将通过回调WBHttpRequest实例的tag属性返回
 */
+ (WBHttpRequest *)requestWithURL:(NSString *)url
                       httpMethod:(NSString *)httpMethod
                           params:(NSDictionary *)params
                         delegate:(id<WBHttpRequestDelegate>)delegate
                          withTag:(NSString *)tag;
 
/**
 统一微博Open API HTTP请求接口
 调用此接口后,将发送一个HTTP网络请求(用于访问微博open api)
 @param accessToken 应用获取到的accessToken,用于身份验证
 @param url 请求url地址
 @param httpMethod  支持"GET" "POST"
 @param params 向接口传递的参数结构
 @param delegate WBHttpRequestDelegate对象,用于接收微博SDK对于发起的接口请求的请求的响应
 @param tag 用户自定义TAG,将通过回调WBHttpRequest实例的tag属性返回
 */
+ (WBHttpRequest *)requestWithAccessToken:(NSString *)accessToken
                                      url:(NSString *)url
                               httpMethod:(NSString *)httpMethod
                                   params:(NSDictionary *)params
                                 delegate:(id<WBHttpRequestDelegate>)delegate
                                  withTag:(NSString *)tag;
 
 
 
/**
 取消网络请求接口
 调用此接口后,将取消当前网络请求,建议同时[WBHttpRequest setDelegate:nil];
 注意:该方法只对使用delegate的request方法有效。无法取消任何使用block的request的网络请求接口。
 */
- (void)disconnect;
 
#pragma mark - block extension
 
typedef void (^WBRequestHandler)(WBHttpRequest *httpRequest,
                                 id result,
                                 NSError *error);
 
/**
 统一微博Open API HTTP请求接口
 调用此接口后,将发送一个HTTP网络请求(用于访问微博open api)
 @param url 请求url地址
 @param httpMethod  支持"GET" "POST"
 @param params 向接口传递的参数结构
 @param queue 发起请求的NSOperationQueue对象,如queue为nil,则在主线程([NSOperationQueue mainQueue])发起请求。
 @param handler 接口请求返回调用的block方法
 */
+ (WBHttpRequest *)requestWithURL:(NSString *)url
                       httpMethod:(NSString *)httpMethod
                           params:(NSDictionary *)params
                            queue:(NSOperationQueue*)queue
            withCompletionHandler:(WBRequestHandler)handler;
 
 
/**
 统一HTTP请求接口
 调用此接口后,将发送一个HTTP网络请求
 @param url 请求url地址
 @param httpMethod  支持"GET" "POST"
 @param params 向接口传递的参数结构
 @param queue 发起请求的NSOperationQueue对象,如queue为nil,则在主线程([NSOperationQueue mainQueue])发起请求。
 @param handler 接口请求返回调用的block方法
 */
+ (WBHttpRequest *)requestWithAccessToken:(NSString *)accessToken
                                      url:(NSString *)url
                               httpMethod:(NSString *)httpMethod
                                   params:(NSDictionary *)params
                                    queue:(NSOperationQueue*)queue
                    withCompletionHandler:(WBRequestHandler)handler;
 
@end