如何从NSUrlSession返回NSHttpUrlResponse状态代码

时间:2016-02-09 09:41:29

标签: ios swift nsurlsession

如何从NSUrlSession返回NSHttpUrlResponse状态代码。 我对这种语言很陌生。所以,如果还有其他更好的做法请告诉我。我的代码就在下面。

<tx:annotation-driven transaction-manager="transactionManager"/>

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
    <property name="url" value="${database.url}"/>
    <property name="driverClassName" value="${database.driver}" />
    <property name="username" value="${database.user}" />
    <property name="password" value="${database.password}" />
</bean>

<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    <property name="dataSource" ref="dataSource" />
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    <property name="dataSource" ref="dataSource" />
    <property name="typeAliasesPackage" value="com.company.model" />
</bean>

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
    <property name="basePackage" value="com.company.mapper" />

</bean>

1 个答案:

答案 0 :(得分:3)

这里<label for="frmentermemorableinformation1:strEnterMemorableInformation_memInfo1">Character 1 </label> 是一个异步任务,即它将在另一个线程(主线程除外)中调用,当你从服务器得到响应时,它的闭包将被调用。

所以你在这里做的是你试图返回在主线程中调用的session.dataTaskWithRequest,即它会在你得到任何回复之前返回。

您应该使用完成处理程序:

responseCode

使用此功能如下:

func responseCode(completion: (statusCode:Int) -> ()){
        if Reachability.isConnectedToNetwork() == true {

            let url = NSURL(string: baseUrl)
            let session = NSURLSession.sharedSession()

            let task = session.dataTaskWithRequest(request,completionHandler: {(data, response, error) -> Void in
                print("Error\(error)")

                if let httpResponse = response as? NSHTTPURLResponse {

                    print("HttpReponse\(httpResponse.statusCode)")
                    // Get a status code and assign it in a variable
                    completion(statusCode: httpResponse.statusCode)

                }
            })
            task.resume()
        }
    }