2016-07-05 1 views
0

에 적합한 HttpClient를 디자인하는 것이다. 나는 보통 다른 모든 클래스가 사용할 HttpClient.class를 생성한다. 마찬가지로 :내가 아이폰 OS 프로그래머 (매우 숙련되지 않음)입니다 안드로이드

@implementation HttpClient 
-(NSString*)getGetResponse :(NSString*)url{ 
    //do all http get request work 
    return result; 
} 
@end 

그럼 난 HTTP이 일을 어떻게해야합니까 내 프로젝트에 어느 곳이 getGetResponse:를 호출 할 수 있습니다.

NSString *result = [httpClient getGetResponse:@"http://www.example.com/api"] 

그러나 클래스에서 실행하는 Android 요청 네트워크가 확장 AsyncTask.Like는 :

public class HttpTask extends AsyncTask<String,String, String > { 
    @Override 
    protected String doInBackground(String... params) { 
     //network code here 
     return result; 
    } 
    @Override 
    protected void onPostExecute(String result) { 
     super.onPostExecute(result); 
    } 
} 

이 날 혼란 있습니다. 할 방법은? 목적-C 코드처럼 같은 일이 이상 수행 할

+0

대부분의 안드로이드 개발자들은 현재 API와 상호 작용하는 [개조] (http://square.github.io/retrofit/)를 사용하거나 [OkHttp] (http://square.github.io/okhttp/) 기타에 대한 HTTP 작업. 이 유형의 작업 대부분에 AsyncTasks를 사용하지 않는 것이 좋습니다. –

+0

내가 개조 및 OkHttp 연구합니다, 감사합니다. Tanis.7x 대부분의 안드로이드 개발자 @ –

+1

는 개조 또는 다른 라이브러리를 사용하지 마십시오. 일부는 그렇지만 대부분은 그렇다. –

답변

0

당신은하지 않습니다 (호출자에게 결과를 반환). HTTP 호출은 비 순차적으로 발생해야합니다. 그 결과를 반환 기다리는 스레드를 강제하는 대신, 당신은 onPostExecute에 결과를 필요로하는 처리를 할 필요가있다.

+0

답장을 보내 주셔서 감사합니다. 당신은 네트워크 작업을해야하는 모든 클래스에서 HttpTask 클래스를 구현해야한다는 것을 의미합니까? –

+0

예. 또는 결과 콜백을 사용하는 단일 클래스,하지만 당신은 여전히 ​​그렇게 새로운 클래스를하고있어, 그냥 때마다 http를 호출하지 않아도됩니다. –

+0

나는 네가 옳았다는 것을 확신한다. 하지만이 디자인이 너무 비합리적이거나 과도하다고 생각하지 않습니까? –