80,359
社区成员
发帖
与我相关
我的任务
分享
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
package UtilityBundle;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.ArrayList;
import java.util.List;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.params.BasicHttpParams;
import org.apache.http.params.HttpConnectionParams;
import org.apache.http.params.HttpParams;
import org.apache.http.params.HttpProtocolParams;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;
import org.json.JSONObject;
import android.util.Log;
public class WcfHelper
{
private static String UrlString = "http://";
private static final String UTag = "/";
private static final String USvcSuffix = ".svc";
/*
* http://ServerAddress/SvcFileName/ServerMethod?Param1=Val1¶m2=Val2
* @param:
* ServerAddress:192.168.1.198/ACWcfService
* SvcFileName:AccountService
* ServerMethod:SendMessageByPost1
* MethodParam:{"p1","p2"}
* ParamVal:{"v1","v2"}
*/
public static String GetWcfServiceUtility(String ServerAddress,
String SvcFileName, String ServerMethod, String[] MethodParam,
String[] ParamVal)
{
String UrlParam = null;
if ((MethodParam.length > 1))
{
for (int i = 0; i < MethodParam.length; i++)
{
if (i == 0)
{
UrlParam = "?" + MethodParam[i] + "=" + ParamVal[i];
}
else
{
UrlParam = UrlParam + "&" + MethodParam[i] + "="
+ ParamVal[i];
}
}
}
else if (MethodParam.length == 1)
{
UrlParam = "?" + MethodParam[0] + "=" + ParamVal[0];
}
UrlString = UrlString + ServerAddress + UTag + SvcFileName + USvcSuffix + UTag + ServerMethod
+ UrlParam;
String Rslt = null;
try
{
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet(UrlString);
HttpResponse response = client.execute(request);
Rslt = EntityUtils.toString(response.getEntity());
}
catch (Exception e)
{
Rslt = null;
}
UrlString = "http://";
return Rslt;
}
/*
* http://192.168.1.198/ACWcfService/AccountService.svc/SendMessageByPost1
* @param:
* ServerAddress:192.168.1.198/ACWcfService
* SvcFileName:AccountService
* ServerMethod:SendMessageByPost1
* MethodParam:{"p1","p2"}
* ParamVal:{"v1","v2"}
*/
public static String PostWcfServiceUtility(String ServerAddress,
String SvcFileName, String ServerMethod, String[] MethodParam,
String[] ParamVal)
{
String Rslt = null;
try
{
// 创建 HttpParams 以用来设置 HTTP 参数(这一部分不是必需的)
HttpParams params = new BasicHttpParams();
// 设置连接超时和 Socket 超时,以及 Socket 缓存大小
HttpConnectionParams.setConnectionTimeout(params, 20 * 1000);
HttpConnectionParams.setSoTimeout(params, 20 * 1000);
HttpConnectionParams.setSocketBufferSize(params, 8192);
// 设置重定向,缺省为true
HttpClientParams.setRedirecting(params, true);
HttpClient client = new DefaultHttpClient(params);
UrlString = UrlString + ServerAddress + UTag + SvcFileName + USvcSuffix + UTag
+ ServerMethod;
HttpPost request = new HttpPost(UrlString);
JSONObject p = new JSONObject();
for (int i = 0; i < MethodParam.length; i++)
{
p.put(MethodParam[i], ParamVal[i]);
}
request.setEntity(new StringEntity(p.toString()));
request.setHeader(HTTP.CONTENT_TYPE, "application/json");
HttpResponse response = client.execute(request);
Rslt = EntityUtils.toString(response.getEntity());
}
catch (Exception e)
{
Rslt = null;
}
UrlString = "http://";
return Rslt;
}
public static String HttpURLPost(String ServerAddress,
String SvcFileName, String ServerMethod, String[] MethodParam,
String[] ParamVal)
{
String Rslt = StringHelper.Empty();
HttpURLConnection urlCnn = null;
InputStream inputStream = null;
try {
UrlString = UrlString + ServerAddress + UTag + SvcFileName + USvcSuffix + UTag
+ ServerMethod;
URL url = new URL(UrlString);
urlCnn = (HttpURLConnection) url.openConnection();
urlCnn.setDoOutput(true);
urlCnn.setDoInput(true);
urlCnn.setRequestMethod("POST");
urlCnn.setUseCaches(false);
urlCnn.setConnectTimeout(10000);
urlCnn.setReadTimeout(8000);
urlCnn.setRequestProperty("Content-Type", "text/json");
urlCnn.setRequestProperty("Accept-Charset", "utf-8");
urlCnn.setRequestProperty("contentType", "utf-8");
OutputStream os = urlCnn.getOutputStream();
String param = "one=valueGoesHere";
os.write(param.getBytes());
inputStream = urlCnn.getInputStream();
byte[] buffer = null;
if(urlCnn.getResponseCode() == 200){
buffer = new byte[1024];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int len;
while ((len = inputStream.read(buffer)) != -1)
{
out.write(buffer, 0, len);
}
buffer = out.toByteArray();
}
} catch (Exception e) {
e.printStackTrace();
Log.e("sjr","Network-error");
}
finally{
try {
if(inputStream != null){
inputStream.close();
}
if(urlCnn != null){
urlCnn.disconnect();
}
} catch (IOException e) {
e.printStackTrace();
Log.e("sjr","InvokeWebServiceHelper类中释放资源出错");
}
}
return Rslt;
}
}
package UtilityBundle;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.methods.HttpUriRequest;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.message.BasicNameValuePair;
import android.os.Handler;
import android.util.Log;
public class HttpConnectionUtil {
public static enum HttpMethod {GET, POST}
public void asyncConnect(final String url, final HttpMethod method, final HttpConnectionCallback callback) {
asyncConnect(url, null, method, callback);
}
public void syncConnect(final String url, final HttpMethod method, final HttpConnectionCallback callback) {
syncConnect(url, null, method, callback);
}
public void asyncConnect(final String url, final Map<String, String> params,
final HttpMethod method, final HttpConnectionCallback callback) {
Handler handler = new Handler();
Runnable runnable = new Runnable() {
public void run() {
syncConnect(url, params, method, callback);
}
};
handler.post(runnable);
}
public void syncConnect(final String url, final Map<String, String> params,
final HttpMethod method, final HttpConnectionCallback callback) {
String json = null;
BufferedReader reader = null;
try {
HttpClient client = new DefaultHttpClient();
HttpUriRequest request = getRequest(url, params, method);
HttpResponse response = client.execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
StringBuilder sb = new StringBuilder();
for (String s = reader.readLine(); s != null; s = reader.readLine()) {
sb.append(s);
}
json = sb.toString();
}
} catch (ClientProtocolException e) {
Log.e("HttpConnectionUtil", e.getMessage(), e);
} catch (IOException e) {
Log.e("HttpConnectionUtil", e.getMessage(), e);
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
// ignore me
}
}
callback.execute(json);
}
private HttpUriRequest getRequest(String url, Map<String, String> params, HttpMethod method) {
if (method.equals(HttpMethod.POST)) {
List<NameValuePair> listParams = new ArrayList<NameValuePair>();
if (params != null) {
for (String name : params.keySet()) {
listParams.add(new BasicNameValuePair(name, params.get(name)));
}
}
try {
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(listParams);
HttpPost request = new HttpPost(url);
request.setEntity(entity);
return request;
} catch (UnsupportedEncodingException e) {
// Should not come here, ignore me.
throw new java.lang.RuntimeException(e.getMessage(), e);
}
} else {
if (url.indexOf("?") < 0) {
url += "?";
}
if (params != null) {
for (String name : params.keySet()) {
url += "&" + name + "=" + URLEncoder.encode(params.get(name));
}
}
HttpGet request = new HttpGet(url);
return request;
}
}
}
package UtilityBundle;
public interface HttpConnectionCallback {
void execute(String response);
}
不知道怎么实现这个接口,我直接用Login extends Activity implements HttpConnectionCallback 实现后,但执行不了void execute(String response){这里如果操作response就会出错} // 如果本系统为4.0以上(Build.VERSION_CODES.ICE_CREAM_SANDWICH为android4.0)
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
// 详见StrictMode文档
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
.detectDiskReads().detectDiskWrites().detectNetwork()
.penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
.detectLeakedSqlLiteObjects().detectLeakedClosableObjects()
.penaltyLog().penaltyDeath().build());
}