如何使用JSON将数据发布到Web服务?
我必须在以下URL数据发送到web服务如何使用JSON将数据发布到Web服务?
要被发送的数据的格式是:
new_member=[{"email":"[email protected]","username":"himanshu01","pwd":"himanshu01"}]
其中email
,username
和pwd
是关键,并且具有相应的值的字符串通过的EditText取出串。我点击按钮发布这些数据。
我没有得到任何回应bcoz我试图反击检查与我的合作开发人员在他的iPhone相同的应用程序iPhone版的用户名和密码无效是由服务器说。
我Signup.java
类是:
Button b1=(Button)findViewById(R.id.button1);
b1.setOnClickListener(new OnClickListener()
{
EditText e=(EditText)findViewById(R.id.editText1);
String a=e.getText().toString();
EditText e1=(EditText)findViewById(R.id.editText1);
String b=e1.getText().toString();
EditText e2=(EditText)findViewById(R.id.editText1);
String c=e2.getText().toString();
public void onClick(View v) {
// TODO Auto-generated method stub
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
JSONObject json = new JSONObject();
try{
HttpPost post = new HttpPost("URL");
//System.out.println(post);
json.put("email", a);
json.put("username", b);
json.put("pwd",c);
StringEntity se = new StringEntity("JSON: " + json.toString());
se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
post.setEntity(se);
response = client.execute(post);
/*Checking response */
if(response!=null){
InputStream in = response.getEntity().getContent(); //Get the data in the entity
//System.out.println(response);
}
}
catch(Exception e){
e.printStackTrace();
System.out.println(e.toString());
//createDialog("Error", "Cannot Estabilish Connection");
}
}
}
);
请帮助我,我在JSON一个新手和Android.Thanx解析。
这里是例子
HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost(
"https://api.dailymile.com/entries.json?oauth_token="
+ token);
httpPost.setHeader("content-type", "application/json");
JSONObject data = new JSONObject();
data.put("message", dailyMilePost.getMessage());
JSONObject workoutData = new JSONObject();
data.put("workout", workoutData);
workoutData.put("activity_type", dailyMilePost.getActivityType());
workoutData.put("completed_at", dailyMilePost.getCompletedAt());
JSONObject distanceData = new JSONObject();
workoutData.put("distance", distanceData);
distanceData.put("value", dailyMilePost.getDistanceValue());
distanceData.put("units", dailyMilePost.getDistanceUnits());
workoutData.put("duration", dailyMilePost.getDurationInSeconds());
workoutData.put("title", dailyMilePost.getTitle());
workoutData.put("felt", dailyMilePost.getFelt());
StringEntity entity = new StringEntity(data.toString(), HTTP.UTF_8);
httpPost.setEntity(entity);
HttpResponse response = httpClient.execute(httpPost);
请参阅此博客的完整信息http://simpleprogrammer.com/2011/06/04/oauth-and-rest-in-android-part-2/
块括号表示一个JSON数组,所以你只需要将你的json对象包装在一个JSONArray中。
JSONArray array = new JSONArray();
JSONObject json = new JSONObject();
json.put("email", a);
json.put("username", b);
json.put("pwd",c);
array.put(json);
把array
放入实体中。
重要提示:您不应在主线程上执行长时间运行(例如网络)任务。使用AsyncTask
在后台正确执行长时间运行的任务,然后更新UI。
Thanx的回复请告诉我我是如何通过new_member =因为我在追加url但实际提供的网址是http://www.fourerr.com/ws/signup我应该把newmember当成json对象吗?请帮助我.. – 2011-12-15 12:51:56
首先,您需要将code
的onClick()
方法内的Strings
从EditTexts
中取出。
那么它看起来像服务器需要一个JSONArray
只有一个项目,所以你需要创建一个JSONArray,是这样的:
JSONArray jsonArray=new JSONArray();
jsonArray.put(json); //your current json
StringEntity entity=new StringEntity("new_member="+jsonArray);
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(3);
nameValuePairs.add(new BasicNameValuePair("email", "[email protected]"));
nameValuePairs.add(new BasicNameValuePair("username", "himanshu01"));
nameValuePairs.add(new BasicNameValuePair("pwd", "himanshu01"));
// You have to add your parameters as nameValuePairs
String res = "";
try
{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("URL");
// Add your data
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
res = EntityUtils.toString(response.getEntity());
JSONTokener t = new JSONTokener(res);
JSONArray a = new JSONArray(t);
JSONObject o = a.getJSONObject(0);
String sc = o.getString("success");
if(sc.equals("1"))
{
// posted successfully
}
else
{
// error occurred
}
}
catch (Exception e)
{
e.printStackTrace();
}
不要忘记指定android.permission.INTERNET权限
Thanx的答复,请告诉我我是如何通过new_member =因为我追加在网址,但实际提供的网址是http://www.fourerr.com/ws/signup我应该把新会员作为JSON目的。??请帮助我.. – 2011-12-15 12:52:25