如何使用nsurlconnection进行多个串行连接?

时间:2014-08-24 06:27:52

标签: objective-c iphone xcode nsurlconnection

我是iPhone开发的新手,所以我不知道这是简单还是复杂。 这是我的问题。我有一个应用程序,它首先连接到Web服务进行身份验证过程。身份验证后,我需要获取登录用户的数据。那么,如何使用NSURLConnection连接两次并连续地连接到Web服务。系列意味着首先登录然后检索数据。在我的情况下,请求以随机顺序发送,意味着有时它首先发送登录请求并且有时检索数据请求。 任何人都可以请帮助。 感谢。

2 个答案:

答案 0 :(得分:0)

试着同步你的电话。这是一个例子:

  1. 请求登录并等待登录响应

  2. 获取登录响应并调用getData()

  3. 如果是登录响应,请求数据。

  4. 希望这会有所帮助.. :)

    修改

    维护两个全局标志(变量)。让loginReq和dataReq是那些标志。

    在调用getLogin()之前,使loginReq = true;

    connectinDidFinishLoading支票

    if(loginReq == true){
        loginReq = false;
        dataReq = true;
        getData();
    }
    else if(dataReq == true){
        dataReq = false;
    }
    

答案 1 :(得分:0)

将NSURLConnection的委托设置为self,并实现NSURLConnectionDelegate方法,这里有一个名为

的方法
- (void) connectionDidFinishLoading:(NSURLConnection*)connection 

告诉您请求何时成功完成,因此在其中可以调用第二个请求。

现在你唯一的问题是你不知道要拨打哪个请求第二个:)因为你不知道哪个被叫第一个所以我通常做的只是简单地定义一些变量,只是一个int或NSString作为标记,例如

在@implemenetation之前添加这些

#define TAG_LOGIN_REQUEST 1
#define TAG_DATA_REQUEST 2

现在在类

中定义它
int currentTag

现在,在您开始登录请求之前,请添加此

currentTag = TAG_LOGIN_REQUEST;

在您开始数据请求之前添加此

currentTag = TAG_DATA_REQUEST;

每当调用此委托方法时

- (void) connectionDidFinishLoading:(NSURLConnection*)connection 

你只需检查

if (tag == TAG_LOGIN_REQUEST) {
      // send data request
}
else if (tag == TAG_DATA_REQUEST) {
      // send login request
}

我希望这会有所帮助,如果有任何不清楚的地方,请告诉我。