Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/31.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何使用ItemClickListener将JSON post数据发送到服务器_Android_Json - Fatal编程技术网

Android 如何使用ItemClickListener将JSON post数据发送到服务器

Android 如何使用ItemClickListener将JSON post数据发送到服务器,android,json,Android,Json,我正在做一个关于JSON接收和发送post数据的项目。我成功地使用listView接收数据,但我不知道如何将“名称”发送到服务器。 这是我的密码: import java.util.ArrayList; import java.util.HashMap; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import android.app.Activity; impo

我正在做一个关于JSON接收和发送post数据的项目。我成功地使用listView接收数据,但我不知道如何将“名称”发送到服务器。 这是我的密码:

import java.util.ArrayList;
import java.util.HashMap;


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

import android.app.Activity;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.Button;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;
import android.widget.Toast;

import learn2crack.asynctask.library.JSONParser;

public class MainActivity extends Activity {
    ListView list;
    TextView ver;
    TextView name;
    TextView api;
    Button Btngetdata;
    ArrayList<HashMap<String, String>> oslist = new ArrayList<HashMap<String, String>>();

    //URL to get JSON Array
    private static String url = "http://api.learn2crack.com/android/jsonos/";
    private static String purl = ""; // the server hasn't ready yet 

    //JSON Node Names 
    private static final String TAG_OS = "android";
    private static final String TAG_VER = "ver";
    private static final String TAG_NAME = "name";
    private static final String TAG_API = "api";

    JSONArray android = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);
        oslist = new ArrayList<HashMap<String, String>>();

        Btngetdata = (Button)findViewById(R.id.getdata);
        Btngetdata.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View view) {
                 new JSONParse().execute();

            }
        });

    }

    private class JSONParse extends AsyncTask<String, String, JSONObject> {
         private ProgressDialog pDialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
             ver = (TextView)findViewById(R.id.vers);
             name = (TextView)findViewById(R.id.name);
             api = (TextView)findViewById(R.id.api);
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Getting Data ...");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);
            pDialog.show();

        }

        @Override
        protected JSONObject doInBackground(String... args) {

            JSONParser jParser = new JSONParser();

            // Getting JSON from URL
            JSONObject json = jParser.getJSONFromUrl(url);
            return json;
        }
         @Override
         protected void onPostExecute(JSONObject json) {
             pDialog.dismiss();
             try {
                    // Getting JSON Array from URL
                    android = json.getJSONArray(TAG_OS);
                    for(int i = 0; i < android.length(); i++){
                    JSONObject c = android.getJSONObject(i);

                    // Storing  JSON item in a Variable
                    String ver = c.getString(TAG_VER);
                    String name = c.getString(TAG_NAME);
                    String api = c.getString(TAG_API);

                    // Adding value HashMap key => value

                    HashMap<String, String> map = new HashMap<String, String>();

                    map.put(TAG_VER, ver);
                    map.put(TAG_NAME, name);
                    map.put(TAG_API, api);

                    oslist.add(map);
                    list=(ListView)findViewById(R.id.list);

                    ListAdapter adapter = new SimpleAdapter(MainActivity.this, oslist,
                            R.layout.list_item,
                            new String[] { TAG_VER,TAG_NAME, TAG_API }, new int[] {
                                    R.id.vers,R.id.name, R.id.api});

                    list.setAdapter(adapter);

                    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {

                        @Override
                        public void onItemClick(AdapterView<?> parent, View view,
                                                int position, long id) {
                            Toast.makeText(MainActivity.this, "You Clicked at "+oslist.get(+position).get("name"), Toast.LENGTH_SHORT).show();
                            //send "name" to the (purl)


                        }
                    });


                    }
            } catch (JSONException e) {
                e.printStackTrace();
            }

         }
    }

}      
import java.util.ArrayList;
导入java.util.HashMap;
导入org.json.JSONArray;
导入org.json.JSONException;
导入org.json.JSONObject;
导入android.app.Activity;
导入android.app.ProgressDialog;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.view.view;
导入android.widget.AdapterView;
导入android.widget.Button;
导入android.widget.ListAdapter;
导入android.widget.ListView;
导入android.widget.simpledapter;
导入android.widget.TextView;
导入android.widget.Toast;
导入learn2crack.asynctask.library.JSONParser;
公共类MainActivity扩展了活动{
列表视图列表;
文本视图版本;
文本视图名称;
TextView api;
按钮Btngetdata;
ArrayList oslist=新的ArrayList();
//获取JSON数组的URL
专用静态字符串url=”http://api.learn2crack.com/android/jsonos/";
私有静态字符串purl=”“;//服务器尚未准备就绪
//JSON节点名称
私有静态最终字符串标记_OS=“android”;
私有静态最终字符串标记\u VER=“VER”;
私有静态最终字符串标记_NAME=“NAME”;
私有静态最终字符串标记_API=“API”;
JSONArray-android=null;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
oslist=newarraylist();
Btngetdata=(按钮)findviewbyd(R.id.getdata);
Btngetdata.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图){
新建JSONParse().execute();
}
});
}
私有类JSONParse扩展了异步任务{
私人对话;
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
ver=(TextView)findViewById(R.id.vers);
name=(TextView)findViewById(R.id.name);
api=(TextView)findViewById(R.id.api);
pDialog=新建进度对话框(MainActivity.this);
setMessage(“获取数据…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
pDialog.show();
}
@凌驾
受保护的JSONObject doInBackground(字符串…args){
JSONParser jParser=新的JSONParser();
//从URL获取JSON
JSONObject json=jParser.getJSONFromUrl(url);
返回json;
}
@凌驾
受保护的void onPostExecute(JSONObject json){
pDialog.disclose();
试一试{
//从URL获取JSON数组
android=json.getJSONArray(TAG_OS);
for(int i=0;ivalue
HashMap=newHashMap();
地图放置(标签,版本);
地图放置(标签名称、名称);
地图放置(TAG_API,API);
添加(地图);
list=(ListView)findViewById(R.id.list);
ListAdapter=new SimpleAdapter(MainActivity.this,oslist,
R.layout.list_项目,
新字符串[]{TAG\u VER,TAG\u NAME,TAG\u API},新int[]{
R.id.vers、R.id.name、R.id.api});
list.setAdapter(适配器);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
Toast.makeText(MainActivity.this),您在“+oslist.get(+position.get”(“name”)、Toast.LENGTH_SHORT.show()处单击过它;
//将“名称”发送到(purl)
}
});
}
}捕获(JSONException e){
e、 printStackTrace();
}
}
}
}      
如果可以的话。我还希望将ItemClickListener限制为不超过3次,如下所示:

while (list.setOnItemClickListener<3){
} 

while(list.setOnItemClickListener使用http post方法使用namevaluepair方法发布json数据,如果要阻止单击listener不超过3次,则必须维护自己的变量,并检查是否小于或等于3次,然后执行操作。

您可以尝试使用httppost请求和stringEntity发送json数据

将您的doInBackground代码替换为:

HttpClient client = new DefaultHttpClient();

HttpUriRequest request;
try {


        request = new HttpPost(url);


            StringEntity entity = new StringEntity(<-JSON DATA->);//{"name":"Yourname"}
            ((HttpPost) request).setEntity(entity);


        ((HttpPost) request).setHeader("Content-Type",
                "application/json");

    HttpResponse response = client.execute(request);
    HttpEntity entity = response.getEntity();

    String json = convertStreamToString(entity.getContent());

    return new JSONObject(json) ;
} catch (Exception e) {

}
HttpClient=newdefaulthttpclient();
httpuri请求;
试一试{
请求=新的HttpPost(url);
StringEntity实体=新的StringEntity();//{“名称”:“Yourname”}
((HttpPost)请求).setEntity(实体);
((HttpPost)请求).setHeader(“内容类型”,
“应用程序/json”);
HttpResponse response=client.execute(请求);
HttpEntity=response.getEntity();
字符串json=convertStreamToString(entity.getContent());
返回新的JSONObject(json);
}捕获(例外e){
}

这让我很惊讶,你正在异步任务中执行ui操作,但你没有收到任何错误??对我来说,它工作得很好..我正在使用我的SAMSUNG note2..我以前在bundle上执行ui操作,遇到一些网络问题谢谢你的提示,但我已经包含了我的JSONParser类。Wil
HttpClient client = new DefaultHttpClient();

HttpUriRequest request;
try {


        request = new HttpPost(url);


            StringEntity entity = new StringEntity(<-JSON DATA->);//{"name":"Yourname"}
            ((HttpPost) request).setEntity(entity);


        ((HttpPost) request).setHeader("Content-Type",
                "application/json");

    HttpResponse response = client.execute(request);
    HttpEntity entity = response.getEntity();

    String json = convertStreamToString(entity.getContent());

    return new JSONObject(json) ;
} catch (Exception e) {

}