文档章节

okhttp通过post发送Json数据到php 更新数据库

pearl2015
 pearl2015
发布于 2016/05/23 18:25
字数 505
阅读 1K
收藏 6

阿里云携手百名商业领袖、技术大咖,带您一探行进中的数字新基建!>>>

一直在用HttpURLConnection连接PHP服务器,结果更新的数据库都是空值,一直找不到原因,也只能停手了,希望自己有一天能够解决吧~

改成用okHttp实现

1. 布局--简单地加个button,点击后提交json数据到PHP服务器,然后PHP更新数据库表

<?xml version="1.0" encoding="utf-8"?>
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingBottom="@dimen/activity_vertical_margin" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
tools:context="com.pearl.subwayguider.MainActivity"> 
<Button android:layout_width="wrap_content" 
android:layout_height="wrap_content" 
android:text="login" 
android:id="@+id/login_btn" 
android:layout_alignParentTop="true" 
android:layout_alignParentLeft="true" 
android:layout_alignParentStart="true" 
android:layout_marginTop="53dp" />
 </RelativeLayout>

 

2. 权限 ----需要连接网络

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

3.okHttp.jar包的下载和okio.jar包的下载导入 

(1)http://square.github.io/okhttp/        此链接中有

(2)如何导入,请自行搜索

4. android代码 ---(1)button添加监听器  (2)post json数据方法

(1)onCreate函数中

loginbtn = (Button) findViewById(R.id.login_btn); 
loginbtn.setOnClickListener(new View.OnClickListener()
 { 
@Override public void onClick(View v) { 
new Thread(new Runnable() { 
@Override public void run() { 
postJson(); } }).start(); 
} });

(2)postJson方法

public static final MediaType JSON = MediaType.parse("application/json; charset=utf-8"); 
private void postJson() { 
JSONObject user = new JSONObject();
 try { user.put("username","mary2"); 
user.put("password","sadbfdbds"); 
} catch (JSONException e) { 
e.printStackTrace(); } 
//申明给服务端传递一个json串 
//创建一个OkHttpClient对象 
OkHttpClient okHttpClient = new OkHttpClient(); 
//创建一个RequestBody(参数1:数据类型 参数2传递的json串)
 String json = user.toString();
 RequestBody requestBody = RequestBody.create(JSON,json); 
//创建一个请求对象 
Request request = new Request.Builder() .url("http://192.168.155.1/posttest.php") 
.post(requestBody) .build(); 
//发送请求获取响应
try { Response response=okHttpClient.newCall(request).execute(); 
//判断请求是否成功
 if(response.isSuccessful()){
 //打印服务端返回结果 Log.i("Success tag",response.body().string()); 
} } catch (IOException e) { e.printStackTrace(); } }

5. php代码,放在www目录下 文件名为posttest.php

``` php

    <?php  
    //$json=$_POST ['json'];
    error_reporting(E_ALL ^ E_DEPRECATED);
    //$json = '{"username": "dsvcjf","password":"ddfshfd"}';
    //echo $json;
    echo ($json = file_get_contents('php://input'));
    $obj = json_decode($json);


    //Save
    $con = mysql_connect('localhost','root','123456') or die('Cannot connect     to the DB');
    mysql_select_db('test',$con);

      /* grab the posts from the db */
      //$query = "SELECT post_title, guid FROM wp_posts WHERE post_author     = $user_id AND post_status = 'publish' ORDER BY ID DESC LIMIT     $number_of_posts";
      $u=$obj->{'username'};
      $p=$obj->{'password'}; 

    mysql_query("INSERT INTO `test` (username, password) VALUES     ('$u','$p')");

    mysql_close($con);

    ?>

```

 

© 著作权归作者所有

下一篇: bugs
pearl2015
粉丝 4
博文 37
码字总数 8101
作品 0
其它
私信 提问
加载中

评论(0)

Android okhttp3.0 框架使用总结

最近工作主要用到OkHttp3.0网络请求框架,进行Get请求,Post请求,多文件上传等功能,本文内容大部分来源于网上博文,仅做个人总结记录 以下内容来源其他博文: 在使用OKHttp之前,首先要先了...

某杰
2018/09/28
0
0
Android 网络编程之最新OKHTTP:3.9.0

本节前言 本来是想围绕着HttpClient讲解的,后来发先Android4.4之后okhttp代替了hc,所以将不再讲解hc okhttp的简单使用,主要包含: 一般的get请求 一般的post请求 基于Http的文件上传 文件...

osc_3fzeg1rk
2019/03/20
2
0
Android 网络框架 OKHttp3

概述 OKHttp是一个处理网络请求的框架,其优点有,支持http2,对一台机器的所有请求共享同一个socket。 内置连接池,支持连接复用,减少延迟。通过缓存避免重复的请求,请求失败时自动重试主机...

osc_bouq2lox
2018/09/04
2
0
基本使用——OkHttp3详细使用教程

基本使用——OkHttp3详细使用教程 转 https://blog.csdn.net/xx326664162/article/details/77714126 概述 OkHttp现在应该算是最火的Http第三方库,Retrofit底层也是使用OkHttp,网上很多教程...

osc_jwzrbrqe
2019/10/27
3
0
HTTP客户端连接,选择HttpClient还是OkHttp?

为什么会写这篇文章,起因于和朋友的聊天 这又触及到我的知识盲区了,首先来一波面向百度学习,直接根据关键字httpclient和okhttp的区别、性能比较进行搜索,没有找到想要的答案,于是就去o...

osc_pqk6rnzb
02/05
16
0

没有更多内容

加载失败,请刷新页面

加载更多

史上最全的“文件或目录损坏且无法读取”的解决办法大集合

问题描述: G盘打不开文件或目录损坏且无法读取,是因为这个I盘的文件系统内部结构损坏导致的。史上最全的“文件或目录损坏且无法读取”的解决办法大集合具体的恢复方法看正文 工具/软件:极...

计算无敌
今天
9
0
2048游戏的最佳算法是什么? - What is the optimal algorithm for the game 2048?

问题: I have recently stumbled upon the game 2048 . 我最近偶然发现了2048游戏。 You merge similar tiles by moving them in any of the four directions to make "bigger" tiles. 您可......

javail
今天
9
0
Spring Cloud Ribbon 客户端负载均衡

Ribbon客户端组件提供一系列完善的配置选项,比如连接超时、重试、重试算法等,内置可插拔、可定制的负载均衡组件。下面是用到的一些负载均衡策略: 简单轮询负载均衡 加权轮询负载均衡 区域...

泥瓦匠BYSocket
今天
7
0
为什么在Python 3中“范围(1000000000000000(1000000000000001))”这么快?

问题: It is my understanding that the range() function, which is actually an object type in Python 3 , generates its contents on the fly, similar to a generator. 据我了解, ra......

技术盛宴
今天
9
0
OSChina 周四乱弹 —— 卖全家桶!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @巴拉迪维 :陈慧娴的单曲《与泪抱拥》 陈慧娴的嗓音加上向雪怀的词,这样的经典组合真不多。#今日歌曲推荐# 《与泪抱拥》- 陈慧娴 手机党少年...

小小编辑
今天
15
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部