Json 网络上传数据和读取数据(简)
总结:做网络上传数据和读取数据时需要一个完整的结构(环境设置,代理设置,服务器接口),
代码:
上传:
1:初始化:
Common_Json_Lomowall mBase_Json_Data = new Common_Json_Lomowall(this);
2:初始化上传的数据(6个)
String name = save_name.getText().toString();
String id = number + ":";
String caption= save_caption.getText().toString();
String pitch =String.valueOf(mSeekBar1.getProgress());
String rate =String.valueOf(mSeekBar2.getProgress());
Stringtempo =String.valueOf(mSeekBar3.getProgress());
3:启动上传
if (mBase_Json_Data != null) {
mBase_Json_Data.LoadData_IsAudioConfigDataOK(name,pitch,rate, tempo, caption,status);//此处启动逻辑层
}
4:逻辑层结构
/**IsAudioConfigDataOK**/
public boolean LoadData_IsAudioConfigDataOK(Stringname,String pitch,String rate,String tempo,String caption,
String status)
{
boolean bState = false;
try
{
Base_Json_Data cjl = new Base_Json_Data(context);
//Lookup SystemWide Server Nodes
if(cjl.IsLookupServerOK())//判断数据是否存在
{
//IsAudioConfigDataOK
if(cjl.IsAudioConfigDataOK(name,pitch,rate,tempo,caption,status))//启动数据层判断上传是否成功
{
bState = true;
}
}//if(IsLookupServerOK())
nErrorCode = cjl.nErrorCode;//得到网络错误码
}
catch (IOException e)
{
e.printStackTrace();
}
return bState;
}
5:数据层结构
//Audio Config Data
public boolean IsAudioConfigDataOK(Stringname,String pitch,String rate,String tempo,String caption,
String status) throws IOException
{
boolean bState = false;
String strURL = "http://192.168.100.18:10068/mkcmsreport/media/md_audio/request";
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject jsonobject = new JSONObject();
try
{
jsonobject.put("id","118");
jsonobject.put("method","editAudio");
jsonobject.put("auth",auth);
jsonobject.put("client_info",client_info);
jsonobject.put("callback","");
//注意此处的层析结构,对应6接口的结构
JSONObject paramsArray = new JSONObject();
JSONObject paramsobject = new JSONObject();
paramsobject.put("name",name);
paramsobject.put("pitch",pitch);
paramsobject.put("rate",rate);
paramsobject.put("tempo",tempo);
paramsobject.put("caption",caption);
paramsobject.put("status",status);
paramsArray.put("audio_param",paramsobject);
jsonobject.put("params",paramsArray);
}
catch (JSONException e)
{
e.printStackTrace();
}
params.add(newBasicNameValuePair("data", jsonobject.toString()));
Base_Json json = new Base_Json();
String strReturn = json.UploadUserMessage(strURL, params);
if(!strReturn.equals(""))
{
dataList_GC = Common_Functions.getJsonObjectToList(strReturn);
String strTmp = dataList_GC.get(0).get("rst").toString();
if(strTmp.equals("ok"))
{
nErrorCode = 0;
bState = true;
}
else
{
nErrorCode = Integer.parseInt(Common_Functions.getJsonObjectToList(strReturn).get(0).get("error_code").toString());
if(nErrorCode == 415 || nErrorCode == 416 || nErrorCode == 540)
{
if(shareContext.getStaticNumber() == Common_Variables.refresh_number)
{
shareContext.setStaticNumber(0);
bState = false;
}
else
{
shareContext.setStaticNumber(1);
//Client SigninAPI
if(IsClientSigninAPIOK(Common_Sqlite_Lomowall.ReturnApiKey(context)))
{
Base_Json_Data cjl = new Base_Json_Data(context);
cjl.IsAudioConfigDataOK(name,pitch,rate,tempo,caption,status);
}
}
}
bState = false;
}
}
else
{
//网络错误:有500,502,504等等,统一以-1为网络错误code
nErrorCode = -1;
}
return bState;
}
6:展示
for (int i = getDataArray.size(); i >0; i--) {
mListView = (ListView) findViewById(R.id.mlistView);
adapter = new SimpleAdapter(this, getDataArray,
R.layout.layout_item_1, new String[] { "id","name", "caption" },
new int[] { R.id.id , R.id.name, R.id.caption });
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
int pitch =0;int rate=0;int tempo=0;
// int u =Integer.parseInt(syear.getText().toString());
pitch = Integer.parseInt((String) getDataArray.get(position).get("pitch"));
rate =Integer.parseInt((String) getDataArray.get(position).get("rate"));
tempo = Integer.parseInt((String) getDataArray.get(position).get("tempo"));
if (pitch > 0 && pitch < 100 && rate> 0 && rate < 100
&& tempo > 0 && tempo< 100) {
mSeekBar1.setProgress(pitch);
mSeekBar2.setProgress(rate);
mSeekBar3.setProgress(tempo);
}
}
});
}
7接口的结构:
{
"callback": "",
"id": "118",
"client_info": {
"screen": "854x480",
"lon": 108.89905,
"model": "MB525",
"boundleid": "com.soundtouch.test",
"language": "zh-cn",
"utype": "motorola,umts_jordan",
"lat": 34.2356,
"dosv": "2.2.1",
"version": "1.0",
"dos": "Android OS"
},
"method": "editAudio",
"params": {
"audio_param": {
"name": "",
"pitch": "",
"rate": "",
"tempo": "",
"caption": "",
"status": "" // 1 => system ; 2 => User
}
},
"auth": {
"client_type": "ANDROID",
"auth_id": "356509041981945",
"auth_token": "0rltMpmHtVeK"
}
}
8:接口返回的结构
{
"rst": "ok",
"req_id": 118,
"req_method": "editAudio",
"data": {}
}
网络读取数据
1:同上:初始化
Common_Json_Lomowall mBase_Json_Data = new Common_Json_Lomowall(this);
(此处为逻辑层定义)
2:启动网络读取数据
if (mBase_Json_Data != null) {
returnList = mBase_Json_Data.LoadData_GetReturnAudioConfigDataOK(id, name);
}
if (!returnList.equals("")) {
getDataArray = Common_Functions.getJsonArrayToList(returnList,"data");
Log.i(TAG, "getDataArray.." + getDataArray );
}
3:逻辑层
/** ReturnAudioConfigDataOK**/
public String LoadData_GetReturnAudioConfigDataOK(String id, String name)
throws IOException {
String ReturnList = "";
try {
Base_Json_Data cjl = new Base_Json_Data(context);
// Lookup SystemWide Server Nodes
if (cjl.IsLookupServerOK()) {
//ReturnAudioConfigDataOK
ReturnList = cjl.ReturnAudioConfigDataOK(id, name);
}
nErrorCode = cjl.nErrorCode;
} catch (IOException e) {
e.printStackTrace();
}
return ReturnList;
}
4:数据层
// get Audio ConfigData
public String ReturnAudioConfigDataOK(String id,String name) throws IOException
{
String ReturnList = "";
String strURL = "http://192.168.100.18:10068/mkcmsreport/media/md_audio/request";
List<NameValuePair> params = new ArrayList<NameValuePair>();
JSONObject jsonobject = new JSONObject();
try
{
jsonobject.put("id","118");
jsonobject.put("method","getAudios");
jsonobject.put("auth",auth);
jsonobject.put("client_info",client_info);//...
jsonobject.put("callback","");
JSONObject paramsobject = new JSONObject();
paramsobject.put("id",id);
paramsobject.put("name",name);
jsonobject.put("params",paramsobject);
}
catch (JSONException e)
{
e.printStackTrace();
}
params.add(new BasicNameValuePair("data",jsonobject.toString()));
Base_Json json = new Base_Json();
String strReturn = json.UploadUserMessage(strURL, params);
if(!strReturn.equals(""))
{
dataList_GC = Common_Functions.getJsonObjectToList(strReturn);
String strTmp = dataList_GC.get(0).get("rst").toString();
if(strTmp.equals("ok"))
{
ReturnList = strReturn;
nErrorCode = 0;
}
else
{
nErrorCode = Integer.parseInt(Common_Functions.getJsonObjectToList(strReturn).get(0).get("error_code").toString());
if(nErrorCode == 415 || nErrorCode == 416 || nErrorCode == 540)
{
if(shareContext.getStaticNumber() == Common_Variables.refresh_number)
{
shareContext.setStaticNumber(0);
}
else
{
shareContext.setStaticNumber(1);
//Client SigninAPI
if(IsClientSigninAPIOK(Common_Sqlite_Lomowall.ReturnApiKey(context)))
{
Base_Json_Data cjl = new Base_Json_Data(context);
cjl.ReturnAudioConfigDataOK(id,name);
}
}
}
}
}
else
{
//网络错误:有500,502,504等等,统一以-1为网络错误code
nErrorCode = -1;
}
return ReturnList;
}
5:展示listView
for (int i = getDataArray.size(); i >0; i--) {
mListView = (ListView) findViewById(R.id.mlistView);
adapter = new SimpleAdapter(this, getDataArray,
R.layout.layout_item_1, new String[] { "id","name", "caption" },
new int[] { R.id.id , R.id.name, R.id.caption });
mListView.setAdapter(adapter);
mListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public voidonItemClick(AdapterView<?> parent, View view,
int position, long id) {
int pitch =0;int rate=0;int tempo=0;
// int u =Integer.parseInt(syear.getText().toString());
pitch = Integer.parseInt((String) getDataArray.get(position).get("pitch"));
rate = Integer.parseInt((String) getDataArray.get(position).get("rate"));
tempo = Integer.parseInt((String) getDataArray.get(position).get("tempo"));
if (pitch > 0 && pitch < 100 && rate> 0 && rate < 100
&& tempo > 0 && tempo< 100) {
mSeekBar1.setProgress(pitch);
mSeekBar2.setProgress(rate);
mSeekBar3.setProgress(tempo);
}
}
});
}
6:接口结构
{
"callback": "",
"id": "118",
"client_info": {
"screen": "854x480",
"lon": 108.89905,
"model": "MB525",
"boundleid": "com.soundtouch.test",
"language": "zh-cn",
"utype": "motorola,umts_jordan",
"lat": 34.2356,
"dosv": "2.2.1",
"version": "1.0",
"dos": "Android OS"
},
"method": "getAudios",
"params": {
"id": "...",
"name": "..."
},
"auth": {
"client_type": "ANDROID",
"auth_id": "356509041981945",
"auth_token": "0rltMpmHtVeK"
}
}
7:接口的返回
{
"rst": "ok",
"req_id": 118,
"req_method": "getAudios",
"data": [
{
"id": "...",
"name": "…",
"pitch": "…",
"rate": "…",
"tempo": "…",
"caption": "…",
"status": "…"
},
{
"id": "...",
"name": "…",
"pitch": "…",
"rate": "…",
"tempo": "…",
"caption": "…",
"status": "…"
}
]
}