本地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
- 本地Apache服务器配置及Android模拟器的调试
- 真机与Genymotion模拟器调试Android应用不能访问本地服务器(localhost)的解决方案
- Android模拟器连接本地服务器
- android模拟器访问本地服务器
- Android模拟器访问本地服务器
- android模拟器连接本地服务器
- Android模拟器访问本地服务器
- Android模拟器无法访问本地服务器
- Android模拟器访问本地服务器
- Android真机调试连接本地Apache服务器
- Android模拟器访问本地的apache tomcat服务
- Android模拟器与本地服务器的socket通讯
- Android模拟器中访问本地服务器的方法
- 本地apache服务器配置域名
- Android 模拟器映射本地端口调试步骤
- Android与本地服务器交互,出现的问题【android模拟器无法访问本地的tomcat 】
- 跨域,通过Apache本地服务器调试运行
- Android中模拟器如何访问本地服务器
- 学习、提取特征、识别、分类
- AssetBundle二
- C++多文件间函数调用及全局变量共享问题
- java多线程之sleep()跟wait()的区别
- linux安装oracle数据库时出现 No protocol specified
- 本地Apache服务器配置及Android模拟器的调试
- 使用SQL developer 导出与导入Oracle数据库与表的数据
- Hi3519-pinctrl驱动开发④pinctrl driver接口
- 自定义控件三部曲之动画篇(五)——ValueAnimator高级进阶(一)
- Http中200、302、304、404和500等响应状态码所表示的意义?
- 【Netty源码】read、write与accept源码剖析
- 你好Haskell (1) 环境搭建和简单玩玩
- 1
- Tensorflow 实现二分类