2013-02-26 84 views
1

所以,我试图做一个登录活动。它使用mySql的数据库,所以我做了一个php webservice 1login.php。然后我有一个带有方法makeHttpRequest(url,method,params)和LoginActivity类的JSONParser类。但有一个问题。我无法发送params到webservice,但是当我尝试使用GET方法时,它工作(char'@'有一些问题)。我想了解如何使用Post方法。下面是代码:从Android的Post方法不起作用

PHP:(它工作得很好,所以我不认为这个问题是在这里)

<?php 

include "0conn.php"; 
$email =$_POST["email"]; 
$heslo =$_POST["heslo"]; 
$pass=sha1($heslo); 
$query = mysqli_query($conn,"SELECT jmeno,email FROM users WHERE email='$email' AND heslo='$pass'"); 
$res=array(); 
$response=array(); 
if(mysqli_num_rows($query)==1){ 
$result=mysqli_fetch_array($query); 
$res["vysledek"]=1; 
$res["email"]=$result["email"]; 
$res["jmeno"]=$result["jmeno"]; 
} 
else $res["vysledek"]=0; 
$response[]=$res; 
mysqli_free_result($query); 
echo json_encode($response); 
?> 

的JSONParser类:

package com.thevnkid93.ucebnice; 


    import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.io.UnsupportedEncodingException; 
import java.util.List; 

import org.apache.http.HttpEntity; 
import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.client.utils.URLEncodedUtils; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.R.integer; 
import android.os.AsyncTask; 
import android.util.Log; 

    public class JSONParser{ 

     static InputStream is = null; 
     static JSONObject jObj = null; 
     static JSONArray jArr=null; 
     static String json = ""; 




     // function get json from url 
     // by making HTTP POST or GET method 
     public static JSONArray makeHttpRequest(String url, String method, 
       List<NameValuePair> params) { 

      // Making HTTP request 
      try { 
       // check for request method 
       if(method.equals("POST")){ 
        // request method is POST 
        // defaultHttpClient 

        DefaultHttpClient httpClient = new DefaultHttpClient(); 
        HttpPost httpPost = new HttpPost(url); 
        httpPost.setEntity(new UrlEncodedFormEntity(params,"utf-8")); 

        HttpResponse httpResponse = httpClient.execute(httpPost); 
        HttpEntity httpEntity = httpResponse.getEntity(); 
        is = httpEntity.getContent(); 

       }else if(method.equals("GET")){ 
        // request method is GET 
        DefaultHttpClient httpClient = new DefaultHttpClient(); 
        String paramString = URLEncodedUtils.format(params, "utf-8"); 
        url += "?" + paramString; 
        HttpGet httpGet = new HttpGet(url); 

        HttpResponse httpResponse = httpClient.execute(httpGet); 
        HttpEntity httpEntity = httpResponse.getEntity(); 
        is = httpEntity.getContent(); 
       }   

      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } catch (ClientProtocolException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } 

      try { 
       BufferedReader reader = new BufferedReader(new InputStreamReader(
         is, "iso-8859-1"), 8); 
       StringBuilder sb = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
        sb.append(line + "\n"); 
       } 
       is.close(); 
       json = sb.toString(); 
      } catch (Exception e) { 
       Log.e("Buffer Error", "Error converting result " + e.toString()); 
      } 

      // try parse the string to a JSON object 
      try { 
       jArr = new JSONArray(json); 
      } catch (JSONException e) { 
       Log.e("JSON Parser", "Error parsing data " + e.toString()); 
      } 
      // return JSON String (Array) 
      return jArr; 
     } 


} 

和LoginActivity类:

package com.thevnkid93.ucebnice; 

import java.util.ArrayList; 
import java.util.List; 
import java.util.concurrent.ExecutionException; 

import org.apache.http.NameValuePair; 
import org.apache.http.message.BasicNameValuePair; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.content.Intent; 
import android.os.AsyncTask; 
import android.os.Bundle; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Toast; 

public class LoginActivity extends Activity{ 

    EditText e1,e2; 
    Button b1,b2; 
    List<NameValuePair>infoPost=new ArrayList<NameValuePair>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     // TODO Auto-generated method stub 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.login_layout); 
     e1 = (EditText)findViewById(R.id.login_e1); 
     e2 = (EditText)findViewById(R.id.login_e2); 
     b1 = (Button)findViewById(R.id.login_b1); 
     b2 = (Button)findViewById(R.id.login_b2); 

     b1.setOnClickListener(new OnClickListener(){ 

      public void onClick(View arg0){ 
        int vys=0; 
        String email=e1.getText().toString(); 
        String heslo=e2.getText().toString(); 
        LoadInfo loadi=new LoadInfo(); 
        try { 
         vys=loadi.execute(email,heslo).get(); 
        } catch (InterruptedException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (ExecutionException e) { 
         Toast.makeText(LoginActivity.this, "xxxxxxxx", Toast.LENGTH_LONG).show(); 
         e.printStackTrace(); 
        } 

        Toast.makeText(LoginActivity.this, ""+vys, Toast.LENGTH_LONG).show(); 
      } 
     });//TLACITKO PRIHLASENI 




    } 

} 

class LoadInfo extends AsyncTask<String, String, Integer>{ 
    List<NameValuePair> params = new ArrayList<NameValuePair>(); 
    @Override 
    protected Integer doInBackground(String... args) { 
     params.add(new BasicNameValuePair("email", args[0])); 
     params.add(new BasicNameValuePair("heslo", args[1])); 
     JSONArray jArray = JSONParser.makeHttpRequest(my_url, "POST", params); 
     int vys=0; 
     try { 
      JSONObject jobject = jArray.getJSONObject(0); 
      vys=jobject.getInt("vysledek"); 
     } catch (JSONException e) { 
      vys=2; 
      e.printStackTrace(); 
     } 
     return vys; 
    } 


} 

回答

0

首先是第一件事。我们需要一个更具体的信息,然后“它只是不工作”

你需要做的事情。

1)使用一个很好的教程。我强烈推荐this之一。 2)在你检查你的代码之前,确保你的php能正常工作。有一个伟大的!测试人员称为POSTman。用它测试你的php代码。

3)更好地组织你的课程。你应该(如我发布的教程所做的那样)创建一个useractions类,用于处理Web调用和对所创建的JSON类的调用。

这三件事你可以调试你的代码,然后给我们一个更具体的问题,社区将最有可能帮助你。

+0

问题是,web服务不起作用,我创建了新的,现在它工作得很好,thx你们都 – vnkid 2013-03-01 11:56:52