Skip to content

Commit a114b3f

Browse files
committed
Merge pull request #1 from friendlyfashion/33809bf10d860eee6fa67ef00958da0eae1aef01
Recent changes at original repo working with refactored response handlers
2 parents c2cbe6b + 33809bf commit a114b3f

File tree

2 files changed

+129
-2
lines changed

2 files changed

+129
-2
lines changed

src/com/loopj/android/http/AsyncHttpClient.java

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ public void delete(Context context, String url, Header[] headers, AsyncHttpRespo
559559

560560

561561
// Private stuff
562-
private void sendRequest(DefaultHttpClient client, HttpContext httpContext, HttpUriRequest uriRequest, String contentType, AsyncHttpResponseHandler responseHandler, Context context) {
562+
protected void sendRequest(DefaultHttpClient client, HttpContext httpContext, HttpUriRequest uriRequest, String contentType, AsyncHttpResponseHandler responseHandler, Context context) {
563563
if(contentType != null) {
564564
uriRequest.addHeader("Content-Type", contentType);
565565
}
@@ -583,7 +583,11 @@ private void sendRequest(DefaultHttpClient client, HttpContext httpContext, Http
583583
public static String getUrlWithQueryString(String url, RequestParams params) {
584584
if(params != null) {
585585
String paramString = params.getParamString();
586-
url += "?" + paramString;
586+
if (url.indexOf("?") == -1) {
587+
url += "?" + paramString;
588+
} else {
589+
url += "&" + paramString;
590+
}
587591
}
588592

589593
return url;
Lines changed: 123 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,123 @@
1+
package com.loopj.android.http;
2+
3+
import java.io.IOException;
4+
5+
import org.apache.http.client.methods.HttpUriRequest;
6+
import org.apache.http.impl.client.DefaultHttpClient;
7+
import org.apache.http.protocol.HttpContext;
8+
9+
import android.content.Context;
10+
import android.os.Message;
11+
12+
public abstract class SyncHttpClient extends AsyncHttpClient {
13+
private int responseCode;
14+
/*
15+
* as this is a synchronous request this is just a helping mechanism to pass
16+
* the result back to this method. Therefore the result object has to be a
17+
* field to be accessible
18+
*/
19+
private String result;
20+
AsyncHttpResponseHandler responseHandler = new TextHttpResponseHandler() {
21+
22+
void sendResponseMessage(org.apache.http.HttpResponse response) throws IOException {
23+
responseCode = response.getStatusLine().getStatusCode();
24+
super.sendResponseMessage(response);
25+
};
26+
27+
@Override
28+
protected void sendMessage(Message msg) {
29+
/*
30+
* Dont use the handler and send it directly to the analysis
31+
* (because its all the same thread)
32+
*/
33+
handleMessage(msg);
34+
}
35+
36+
@Override
37+
public void onSuccess(String content) {
38+
result = content;
39+
}
40+
41+
@Override
42+
public void onFailure(String content, Throwable error) {
43+
result = onRequestFailed(error, content);
44+
}
45+
};
46+
47+
/**
48+
* @return the response code for the last request, might be usefull
49+
* sometimes
50+
*/
51+
public int getResponseCode() {
52+
return responseCode;
53+
}
54+
55+
// Private stuff
56+
protected void sendRequest(DefaultHttpClient client,
57+
HttpContext httpContext, HttpUriRequest uriRequest,
58+
String contentType, AsyncHttpResponseHandler responseHandler,
59+
Context context) {
60+
if (contentType != null) {
61+
uriRequest.addHeader("Content-Type", contentType);
62+
}
63+
64+
/*
65+
* will execute the request directly
66+
*/
67+
new AsyncHttpRequest(client, httpContext, uriRequest, responseHandler)
68+
.run();
69+
}
70+
71+
public abstract String onRequestFailed(Throwable error, String content);
72+
73+
public void delete(String url, RequestParams queryParams,
74+
AsyncHttpResponseHandler responseHandler) {
75+
// TODO what about query params??
76+
delete(url, responseHandler);
77+
}
78+
79+
public String get(String url, RequestParams params) {
80+
this.get(url, params, responseHandler);
81+
/*
82+
* the response handler will have set the result when this line is
83+
* reached
84+
*/
85+
return result;
86+
}
87+
88+
public String get(String url) {
89+
this.get(url, null, responseHandler);
90+
return result;
91+
}
92+
93+
public String put(String url, RequestParams params) {
94+
this.put(url, params, responseHandler);
95+
return result;
96+
}
97+
98+
public String put(String url) {
99+
this.put(url, null, responseHandler);
100+
return result;
101+
}
102+
103+
public String post(String url, RequestParams params) {
104+
this.post(url, params, responseHandler);
105+
return result;
106+
}
107+
108+
public String post(String url) {
109+
this.post(url, null, responseHandler);
110+
return result;
111+
}
112+
113+
public String delete(String url, RequestParams params) {
114+
this.delete(url, params, responseHandler);
115+
return result;
116+
}
117+
118+
public String delete(String url) {
119+
this.delete(url, null, responseHandler);
120+
return result;
121+
}
122+
123+
}

0 commit comments

Comments
 (0)