脚本宝典收集整理的这篇文章主要介绍了php – 如何在android上使用SSL与多实体,脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
那么,我想知道如何在其上实现SSL?或者我只需要将PHP程序和andROId端POST更改为以“https”而不是“http”开头的网站?谢谢
PRotected class FormHandler extends AsyncTask<Object,Void,JSONObject> { private ForMListener listener; private ProgreSSDiaLOG pd; public FormHandler() { pd = ProgressDialog.show(ctx,"",ctx.getResources().getString(R.string.loading),true); } @override protected JSONObject doInBackground(Object... params) { multipartentityBuilder builder = multipartentityBuilder.create(); builder.setMode(HttpMultipartMode.brOWSER_COMPATIBLE); listener = (FormListener) params[0]; // wordpress default parameter builder.addTextBody("_wpCF7","610"); builder.addTextBody("_wpcf7_version","3.7.2"); builder.addTextBody("_wpcf7_locale","en_US"); builder.addTextBody("_wpcf7_unIT_tag","wpcf7-f610-p611-o1"); builder.addTextBody("_wpnonce","4ddF1f1d07"); builder.addPart("your-Firstname",new StringBody((String) params[1],ContentTyPE.create("text/plain",Consts.UTF_8))); builder.addPart("your-lastname",new StringBody((String) params[2],Consts.UTF_8))); builder.addPart("your-email",new StringBody((String) params[3],Consts.UTF_8))); builder.addPart("your-question",new StringBody((String) params[4],Consts.UTF_8))); builder.addPart("your-details",new StringBody((String) params[5],Consts.UTF_8))); builder.addTextBody("_wpcf7_is_ajax_call","1"); // Set timeout (1 minute) HttpParams httpParameters = new BasicHttpParams(); httpconnectionParams.setConnectionTimeout(httpParameters,Constant.uploadTimeout); httpconnectionParams.setSoTimeout(httpParameters,Constant.uploadTimeout); HttpClient client = new DefaultHttpClient(httpParameters); HttpPost post = new HttpPost(Constant.formURL); httpentity entity = builder.build(); post.setEntity(entity); try { HttpResponse response = client.execute(post); BufferedReader reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent(),"UTF-8")); StringBuilder strBuild = new StringBuilder(); for (String line = null; (line = reader.readLine()) != null;) { strBuild.append(line).append("\n"); } String result = strBuild.toString().replace("<textarea>","").replace("</textarea>",""); JSONTokener tokener = new JSONTokener(result); if (tokener != null) return (new JSONObject(tokener)); } catch (ClientProtocolException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } return null; } @Override protected void onPostExecute(JSONObject result) { if(pd != null) { pd.dismiss(); } if(result != null) { try { if (result.getString("mailSent").equals("true")) listener.submitcomplete(); else listener.submitFailure(); } catch (JSONException e) { listener.submitFailure(); } } else { Utility.showErrorDialog(ctx,getResources().getString(R.string.Sys_info),getResources().getString(R.string.err_submit),getResources().getString(R.string.close)); } } }
// Http Client with SSL factory public HttpClient getNewHttpClient() { try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null,null); SSLSocketFactory sf = new MySSLSocketFactory(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpParams params = new BasicHttpParams(); HttpProtocolParams.setVersion(params,Httpversion.HTTP_1_1); HttpProtocolParams.setContentCharset(params,HTTP.UTF_8); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http",PlainSocketFactory.getSocketFactory(),80)); registry.register(new Scheme("https",sf,443)); ClientConnectionManager ccm = new ThreadSafeClientConnManager(params,registry); return new DefaultHttpClient(ccm,params); } catch (Exception e) { return new DefaultHttpClient(); } } // Post request for multi part entity public void postRequest(){ DefaultHttpClient httpClient = new getNewHttpClient(); HttpPost postRequest = new HttpPost(url); String auth = "USER_NAME" + ":" + "PASSWORD"; byte[] bytes = auth.getBytes(); postRequest.setHeader("Authorization","Basic " + new String(Base64.encodeBytes(bytes))); try { multipartentity mpC = new multipartentity(); FileBody fb = new FileBody(message); StringBody sbPicID = new StringBody(fb.getFilename()); mpC.addPart("name",sbPicID); mpC.addPart("file",fb); postRequest.setEntity(mpC); HttpResponse res; res = httpClient.execute(postRequest); BufferedReader rd = new BufferedReader(new InputStreamReader(res.getEntity().getContent())); String resPictureid = ""; resPictureId = rd.readLine(); Session.put("PICTURE_"+position,resPictureId); res.getEntity().getContent().close(); }catch (Exception e) { // TODO: handle exception } } // SSL factory class public class MySSLSocketFactory extends SSLSocketFactory { SSLContext sslContext = SSLContext.getInstance("TLS"); public MySSLSocketFactory(KeyStore truststore) throws NoSuchAlgorithmException,KeyManagementException,KeyStoreException,UnrecoverableKeyException { super(truststore); TrustManager tm = new @R_404_317@() { public void checkClientTrusted(X509Certificate[] chain,String authType) throws CertificateException { } public void checkServerTrusted(X509Certificate[] chain,String authType) throws CertificateException { } public X509Certificate[] getAcceptedIssuers() { return null; } }; sslContext.init(null,new TrustManager[] { tm },null); } @Override public Socket createSocket(Socket socket,String host,int port,boolean autoClose) throws IOException,UnkNownHostException { return sslContext.getSocketFactory().createSocket(socket,host,port,autoClose); } @Override public Socket createSocket() throws IOException { return sslContext.getSocketFactory().createSocket(); } }
以上是脚本宝典为你收集整理的php – 如何在android上使用SSL与多实体全部内容,希望文章能够帮你解决php – 如何在android上使用SSL与多实体所遇到的问题。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。