2014-01-21 5 views
-1

저는 Android 용 초보자입니다. 내 PHP 페이지로 데이터를 보내려고합니다. 하지만 여기에 나는 그 포스트 가치를 뽐내려고 노력하고있다. 그러나 응답이 없습니다. Plz 도와주세요. 내 코드는 다음과 같습니다HTTP POST + ANDROID 응답을 제공하지 않습니다.

public class send_msgActivity extends Activity{ 

//static final String KEY_NAME = "name"; 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.send_msg); 

    Button btn_ok = (Button) findViewById(R.id.btn_ok); 

    btn_ok.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View arg0) { 
      EditText editText1 = (EditText)findViewById(R.id.sender); 
      String S_name = editText1.getText().toString(); 
      EditText editText2 = (EditText)findViewById(R.id.reciever); 
      String S_email = editText2.getText().toString(); 
     postData(S_name,S_email);  
     } 
    }); 
}; 

public void postData(String name,String email) { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost("http://www.URL.com/yourpage.php"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("Fname", name)); 
     nameValuePairs.add(new BasicNameValuePair("Femail", email)); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     //HttpResponse response = httpclient.execute(httppost, new BasicResponseHandler()); 
     HttpResponse response = httpclient.execute(httppost); 
     String reverseString = response.toString(); 
     Toast.makeText(this, "response" + reverseString, Toast.LENGTH_LONG).show(); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 
} 
+1

HTTPpost 방법을 코딩하는 방법. 그리고 AsyncTask에서만 호출해야합니다. – VM4

+0

VM이 맞습니다. 지금하고있는 유일한 일은 edittext 필드의 텍스트를 문자열로 설정하는 것입니다. 여전히 postData 메소드를 사용해야합니다. 안드로이드 2.3까지는 클릭 리너에서이 방법을 추가 할 수 있었지만 이것은 좋지 않은 방법입니다. AsyncTask를 대신 사용하십시오. 이를 위해 많은 온라인 자습서가 있습니다. – Fabian

+0

내 실수를 저 지르시오. 그러나 나는 그 방법들을 불렀고 여기에 쓰는 것을 잊어 버렸습니다. 이제 제 실제 코드는 이것입니다. – Prabhat

답변

0

사용이 예 당신은 당신의 방법 호출되지

package com.example.login; 

import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 
import java.util.Iterator; 
import java.util.List; 

import org.apache.http.HttpResponse;a 
import org.apache.http.NameValuePair; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.params.BasicHttpParams; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.params.HttpParams; 
import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 



import android.os.AsyncTask; 
import android.os.Bundle; 
import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.content.Context; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.util.Log; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.Spinner; 
import android.widget.TextView; 
import android.widget.Toast; 


public class pdf extends Activity 
{ 
    public boolean connect=false,logged=false; 
    public String db_select; 
    ListView l1; 
    String mPwd,UName1="Success",UName,ret; 
    public Iterator<String> itr; 
    private String SERVICE_URL = "http://61.12.7.197:8080/Agero/person/pdf"; 
    private String SERVICE_URL1 = "http://61.12.7.197:8080/Agero/person/url"; 
    //private final String SERVICE_URL = "http://10.1.1.138:8080/Agero/person/pdf"; 
    //private final String SERVICE_URL1 = "http://10.1.1.138:8080/Agero/person/url"; 
    private final String TAG = "Course"; 
    ArrayList<String> todoItems; 
    Boolean isInternetPresent = false; 
    ConnectionDetector cd; 
    ArrayAdapter<String> aa; 
    public List<String> list1=new ArrayList<String>(); 
    @Override 
    protected void onCreate(Bundle savedInstanceState) 
    { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.pdf); 
     l1 = (ListView)findViewById(R.id.list); 
     todoItems = new ArrayList<String>(); 
      aa = new ArrayAdapter<String>(this,R.layout.list_row,R.id.title,todoItems); 
      l1.setAdapter(aa); 
      todoItems.clear(); 
      cd = new ConnectionDetector(getApplicationContext()); 
      isInternetPresent = cd.isConnectingToInternet(); 
      if(isInternetPresent) 
      { 
      try 
      { 
       validat_user(); 
       //display("hi"); 

      } 
      catch(Exception e) 
      { 
       display("Network error.\nPlease check with your network settings."); 
      } 
      } 
      else 
      { 
       display("No Internet Connection.."); 
      } 

      l1.setOnItemClickListener(new OnItemClickListener() { 
       public void onItemClick(AdapterView<?> parent, View view, 
        int position, long id) { 
       // TODO Auto-generated method stub 
       String name=(String)parent.getItemAtPosition(position); 

       /*Toast.makeText(getBaseContext(), name, Toast.LENGTH_LONG).show(); 
        Intent i = new Intent(getBaseContext(),Webview.class); 
        i.putExtra("USERNAME", name); 
        startActivity(i);*/ 
       cd = new ConnectionDetector(getApplicationContext()); 
        isInternetPresent = cd.isConnectingToInternet(); 
       if(isInternetPresent) 
        { 
       try 
        { 
         validat_user1(name); 

        } 
        catch(Exception e) 
        { 
         display("Network error.\nPlease check with your network settings."); 

        } 

        } 
       else 
        { 
         display("No Internet Connection.."); 
        } 
       } 
      }); 




    } 
    public void display(String msg) 
    { 
     Toast.makeText(pdf.this, msg, Toast.LENGTH_LONG).show(); 
    } 
    private void validat_user() 
    { 

     WebServiceTask wst = new WebServiceTask(WebServiceTask.POST_TASK, this, ""); 

     // wst.addNameValuePair("State", stg1); 
     // wst.addNameValuePair("Emp_PWD", stg2); 
     // db_select=stg1; 
     //display("I am"); 
     wst.execute(new String[] { SERVICE_URL }); 
     //display(SERVICE_URL); 

    } 
    private void validat_user1(String stg1) 
    { 
     db_select=stg1; 
     WebServiceTask wst = new WebServiceTask(WebServiceTask.POST_TASK, this, "Loading..."); 

     wst.addNameValuePair1("PDF_NAME", stg1); 


     wst.execute(new String[] { SERVICE_URL1 }); 

    } 
    @SuppressWarnings("deprecation") 
    public void no_net() 
    { 
     display("No Network Connection"); 
     final AlertDialog alertDialog = new AlertDialog.Builder(pdf.this).create(); 
     alertDialog.setTitle("No Internet Connection"); 
     alertDialog.setMessage("You don't have internet connection.\nElse please check the Internet Connection Settings."); 
     //alertDialog.setIcon(R.drawable.error_info); 
     alertDialog.setCancelable(false); 
     alertDialog.setButton("Close", new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int which) 
      { 
       alertDialog.cancel(); 
       pdf.this.finish(); 
       System.exit(0); 
      } 
     }); 
     alertDialog.setButton2("Use Local DataBase", new DialogInterface.OnClickListener() 
     { 
      public void onClick(DialogInterface dialog, int which) 
      { 
       display("Accessing local DataBase....."); 
       alertDialog.cancel(); 
      } 
     }); 
     alertDialog.show(); 
    } 

    private class WebServiceTask extends AsyncTask<String, Integer, String> { 

     public static final int POST_TASK = 1; 

     private static final String TAG = "WebServiceTask"; 

     // connection timeout, in milliseconds (waiting to connect) 
     private static final int CONN_TIMEOUT = 3000; 

     // socket timeout, in milliseconds (waiting for data) 
     private static final int SOCKET_TIMEOUT = 5000; 

     private int taskType = POST_TASK; 
     private Context mContext = null; 
     private String processMessage = "Processing..."; 

     private ArrayList<NameValuePair> params = new ArrayList<NameValuePair>(); 

     private ProgressDialog pDlg = null; 

     public WebServiceTask(int taskType, Context mContext, String processMessage) { 

      this.taskType = taskType; 
      this.mContext = mContext; 
      this.processMessage = processMessage; 
     } 

     public void addNameValuePair1(String name, String value) { 

      params.add(new BasicNameValuePair(name, value)); 
     } 
     @SuppressWarnings("deprecation") 
     private void showProgressDialog() { 

      pDlg = new ProgressDialog(mContext); 
      pDlg.setMessage(processMessage); 
      pDlg.setProgressDrawable(mContext.getWallpaper()); 
      pDlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); 
      pDlg.setCancelable(false); 
      pDlg.show(); 

     } 

     @Override 
     protected void onPreExecute() { 

      showProgressDialog(); 

     } 

     protected String doInBackground(String... urls) { 

      String url = urls[0]; 
      String result = ""; 

      HttpResponse response = doResponse(url); 

      if (response == null) { 
       return result; 
      } else { 

       try { 

        result = inputStreamToString(response.getEntity().getContent()); 

       } catch (IllegalStateException e) { 
        Log.e(TAG, e.getLocalizedMessage(), e); 

       } catch (IOException e) { 
        Log.e(TAG, e.getLocalizedMessage(), e); 
       } 

      } 

      return result; 
     } 

     @Override 
     protected void onPostExecute(String response) { 

      handleResponse(response); 
      pDlg.dismiss(); 

     } 


     // Establish connection and socket (data retrieval) timeouts 
     private HttpParams getHttpParams() { 

      HttpParams htpp = new BasicHttpParams(); 

      HttpConnectionParams.setConnectionTimeout(htpp, CONN_TIMEOUT); 
      HttpConnectionParams.setSoTimeout(htpp, SOCKET_TIMEOUT); 

      return htpp; 
     } 

     private HttpResponse doResponse(String url) { 

      // Use our connection and data timeouts as parameters for our 
      // DefaultHttpClient 
      HttpClient httpclient = new DefaultHttpClient(getHttpParams()); 

      HttpResponse response = null; 

      try { 
       switch (taskType) { 

       case POST_TASK: 
        HttpPost httppost = new HttpPost(url); 
        // Add parameters 
        httppost.setEntity(new UrlEncodedFormEntity(params)); 

        response = httpclient.execute(httppost); 
        break; 
       } 
      } catch (Exception e) { 
       display("Remote DataBase can not be connected.\nPlease check network connection."); 

       Log.e(TAG, e.getLocalizedMessage(), e); 
       return null; 

      } 

      return response; 
     } 

     private String inputStreamToString(InputStream is) { 

      String line = ""; 
      StringBuilder total = new StringBuilder(); 

      // Wrap a BufferedReader around the InputStream 
      BufferedReader rd = new BufferedReader(new InputStreamReader(is)); 

      try { 
       // Read response until the end 
       while ((line = rd.readLine()) != null) { 
        total.append(line); 
       } 
      } catch (IOException e) { 
       Log.e(TAG, e.getLocalizedMessage(), e); 
      } 

      // Return full string 
      return total.toString(); 
     } 

    } 
    public void handleResponse(String response) 
    { //display("JSON responce is : "+response); 
     if(!response.equals("")) 
     { 
     try { 

      JSONObject jso = new JSONObject(response); 


        int UName = jso.getInt("status1"); 

        if(UName==1) 
        { 
         String status = jso.getString("status"); 
         ret=status.substring(13,status.length()-2); 
         todoItems.add(0, status); 
        aa.notifyDataSetChanged(); 
        } 
        else if(UName==-1) 
        { 
         String status = jso.getString("status"); 
         //display(status); 
         Intent intObj=new Intent(pdf.this,Webview.class); 
         intObj.putExtra("USERNAME", status); 
         startActivity(intObj); 
        } 
        else 
        { 
//      int count=Integer.parseInt(UName); 
//      display("Number of Projects have been handling in AFL right now: "+count); 
        list1=new ArrayList<String>(); 

        JSONArray array=jso.getJSONArray("reps1"); 
        for(int i=0;i<array.length();i++) 
        { 
         list1.add(array.getJSONObject(i).getString("pdfName")); 

        } 
        itr=list1.iterator(); 
        while(itr.hasNext()) 
        { 
         //str1=itr.next()+"\n"; 
         todoItems.add(0, itr.next().toString()); 
         aa.notifyDataSetChanged(); 
        } 

        //tv1.setText(str1); 


        }  
     } catch (Exception e) { 
      Log.e(TAG, e.getLocalizedMessage(), e); 
      return; 
     } 
     } 
     else 
     { 
      display("unable to reach the server"); 
     } 


    } 


    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.activity_main, menu); 
     return true; 
    } 



    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
     switch (item.getItemId()) { 
     case R.id.home: 
      Intent intObj=new Intent(pdf.this, MainActivity.class); 
      intObj.putExtra("finish", true); // if you are checking for this in your other Activities 
      intObj.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | 
          Intent.FLAG_ACTIVITY_CLEAR_TASK | 
          Intent.FLAG_ACTIVITY_NEW_TASK); 
      startActivity(intObj); 
      //pdf.this.finish(); 
      finish(); 
      return (true); 

     } 
     return super.onOptionsItemSelected(item); 
    } 

} 
관련 문제