本地Apache服务器配置及Android模拟器的调试

来源:互联网 发布:好用的免费域名 编辑:程序博客网 时间:2024/06/08 10:00
1.Apache的配置方式:https://jingyan.baidu.com/article/d8072ac47baf0eec95cefdca.html

按照这个配置就可以(删除一般会删除不干净,所以尽量不要删除。

(这个一般用不到)http://kazake.blog.51cto.com/2155462/737847

下载的是最新的Apache,参考第一个连接下载的。
这样就配置好了!!!



2.OKHttp连接服务器,服务器本机地址为:https://127.0.0.1 

    
    在将get_data.json放置到合适的位置后为:


postman的运行结果:



重点强调:模拟器与本机IP地址不一样。

 模拟器IP为:https://10.0.2.2/get_data.json
如果这个没设置对,是无法实现连接的。


还有一点需要强调,使用OKHttp访问https类型的网站需要设置证书,这里我参考别人的代码实现的,最后顺利跑通,忙了一整天,各种坑都踩了。
 ssl证书参考博客:http://blog.csdn.net/okmin3/article/details/53585743


代码如下:
package fengjw.com.httpdemo;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;


import org.json.JSONArray;
import org.json.JSONObject;

import java.io.IOException;
import java.security.SecureRandom;
import java.security.cert.X509Certificate;

import javax.net.ssl.HostnameVerifier;
import javax.net.ssl.SSLContext;
import javax.net.ssl.SSLSession;
import javax.net.ssl.SSLSocketFactory;
import javax.net.ssl.TrustManager;
import javax.net.ssl.X509TrustManager;

import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;

public class OKHttpActivity extends AppCompatActivity implements View.OnClickListener{


private TextView text_response;
private String url = "https://10.0.2.2/get_data.json";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_okhttp);
Button btn_request = (Button) findViewById(R.id.btn_okrequest);
text_response = (TextView) findViewById(R.id.text_okresponse);
btn_request.setOnClickListener(this);
}

@Override
public void onClick(View view) {
if (view.getId() == R.id.btn_okrequest){
sendRequestWithOKHttp();
}
}

private void sendRequestWithOKHttp(){
new Thread(new Runnable() {
@Override
public void run() {
try{
OkHttpClient client = new OkHttpClient.Builder()
.sslSocketFactory(createSSLSocketFactory())
.hostnameVerifier(new TrustAllHostnameVerifier())
.build();
Request request = new Request.Builder().url(url).build();
Log.d("fengjw","request: " + request.toString());
Response response = client.newCall(request).execute();
Log.d("fengjw",response.toString());
String responseData = null;
if (response.isSuccessful()){
responseData = response.body().string();
}else {
throw new IOException("Unexpected code " + response);
}
Log.d("fengjw", responseData);
//showResponse(responseData);
parseJSONWithJSONObject(responseData);
}catch (Exception e){
e.printStackTrace();
}
}
}).start();
}

private void parseJSONWithJSONObject(String jsonData){
try{
JSONArray jsonArray = new JSONArray(jsonData);
for (int i =0; i < jsonArray.length(); i ++){
JSONObject jsonObject = jsonArray.getJSONObject(i);
String id = jsonObject.getString("id");
Log.d("fengjw","Id: " + id);
String version = jsonObject.getString("version");
Log.d("fengjw","version : " + version);
String name = jsonObject.getString("name");
Log.d("fengjw","name: " + name);
}
}catch (Exception e){
e.printStackTrace();
}
}

private void showResponse(final String responseData){
runOnUiThread(new Runnable() {
@Override
public void run() {
text_response.setText(responseData);
}
});

}


class TrustAllCerts implements X509TrustManager {

@Override
public void checkClientTrusted(java.security.cert.X509Certificate[] x509Certificates, String s)throws java.security.cert.CertificateException {

}

@Override
public void checkServerTrusted(java.security.cert.X509Certificate[] x509Certificates, String s)throws java.security.cert.CertificateException {

}

public X509Certificate[] getAcceptedIssuers() {return new X509Certificate[0];}
}
private static class TrustAllHostnameVerifierimplements HostnameVerifier {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
}


private SSLSocketFactory createSSLSocketFactory() {
SSLSocketFactory ssfFactory = null;

try {
SSLContext sc = SSLContext.getInstance("TLS");
sc.init(null, new TrustManager[] { new TrustAllCerts() }, new SecureRandom());

ssfFactory = sc.getSocketFactory();
} catch (Exception e) {
}

return ssfFactory;
}

}














阅读全文
0 0
原创粉丝点击