2017-04-11 14 views
-2
package demo.chv.bhudev.chvlogin; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

import org.apache.http.HttpResponse; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.methods.HttpGet; 
import org.apache.http.impl.client.DefaultHttpClient; 

import java.io.BufferedReader; 
import java.io.InputStreamReader; 
import java.io.OutputStreamWriter; 
import java.io.UnsupportedEncodingException; 
import java.net.URL; 
import java.net.URLConnection; 
import java.net.URLEncoder; 

public class MainActivity extends AppCompatActivity { 
TextView content; 
EditText login, pass; 
String Login, Pass; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    login  = (EditText)findViewById(R.id.txt_box_usr); 
    pass  = (EditText)findViewById(R.id.txt_box_pwd); 
    content = (TextView)findViewById(R.id.txt_content); 

    Button save = (Button)findViewById(R.id.btn_login); 
    save.setOnClickListener(new Button.OnClickListener(){ 

     @Override 
     public void onClick(View v) 
     { 
      try{ 
       // CALL GetText method to make post method call 
       GetText(); 
      } 
      catch(Exception ex) 
      { 
       content.setText(ex.getMessage()); 
      } 
     } 
    }); 
} 

private void GetText() throws UnsupportedEncodingException{ 
    Login = login.getText().toString(); 
    Pass = pass.getText().toString(); 

    Toast.makeText(this,"Started",Toast.LENGTH_LONG).show(); 
    String data = URLEncoder.encode("username", "UTF-8") 
      + "=" + URLEncoder.encode(Login, "UTF-8"); 

    data += "&" + URLEncoder.encode("password", "UTF-8") + "=" 
      + URLEncoder.encode(Pass, "UTF-8"); 

    String text = ""; 
    try{ 
     URL url = new URL("mylink"); 
     URLConnection conn = url.openConnection(); 

     conn.setDoOutput(true); 
     OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream()); 
     wr.write(data); 
     wr.flush(); 

     StringBuilder sb = new StringBuilder(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(conn.getInputStream())); 
     while ((text = reader.readLine()) != null){ 
      sb.append(text); 
      break; 
     } 
     content.setText(sb); 
    }catch(Exception r) { Toast.makeText(this,r.getMessage().toString(),Toast.LENGTH_LONG).show(); 
    } 
} 
} 

Für den obigen Code bekomme ich die Ausnahme "Versuch, virtuelle Methode 'java.lang.String java.lang.toString()' auf eine Null-Objekt-Referenz aufzurufen".Android: Senden/Empfangen von Daten

Ich habe viele Dinge im Netz versucht/gesucht, konnte aber keine Lösung finden.

+0

Auf wh Ich Linie Sie erhalten diese Ausnahme? – Lokesh

+0

Bitte fügen Sie Ihren vollständigen Aktivitätscode hinzu. –

+0

Fügen Sie auch Ihren Logcat ein – Lokesh

Antwort

0

ändern folgenden Code:

Toast.makeText(this,r.getMessage().toString(),Toast.LENGTH_LONG).show(); 

zu

Toast.makeText(this,r.getMessage(),Toast.LENGTH_LONG).show(); 

folgt die Beschreibung von getMessage Funktion in der Oracle-Dokumentation:

getMessage

public String getMessage() 

Returns the detail message string of this throwable. 
Returns:the detail message string of this Throwable instance (which may be null). 

So könnten Sie null bekommen

Auch ändern unten Code:

Login = login.getText().toString(); 
Pass = pass.getText().toString(); 

zu:

if(login.getText()!=null) 
    Login = login.getText().toString(); 
if(pass.getText()!=null) 
     Pass = pass.getText().toString(); 
0

Ihre Login- oder Pass-Objekte, von denen ich denke, dass sie die Editiertext-Ansicht sind, wurden vor der Ausführung dieser Methode nicht initialisiert. Dies gibt den Fehler "auf null Objektreferenz"

0

Sie müssen festlegen, welche Anforderungsmethode Ihre Berufung wie POST eingeben oder GET Anruf so versuchen Sie dies

urlConnection = (HttpURLConnection) url.openConnection(); 
    urlConnection.setDoOutput(true); 
    urlConnection.setRequestMethod("POST"); 
    urlConnection.setRequestProperty("Authorization", "Basic " + base64Encoded); 
    urlConnection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8"); 
    PrintWriter out = new PrintWriter(urlConnection.getOutputStream()); 
    out.print(_param); 
    out.close(); 

    int statusCode = urlConnection.getResponseCode(); 

    if (statusCode == 200) { 
     inputStream = new BufferedInputStream(urlConnection.getInputStream()); 

     try { 
      sb = new StringBuilder(); 
      BufferedReader r = new BufferedReader(new InputStreamReader(
        _instream)); 
      for (String line = r.readLine(); line != null; line = r.readLine()) { 
       sb.append(line); 
      } 

      _instream.close(); 

     } catch (IOException e) { 
      System.out.println(e.getMessage()); 
     } 
     // sb.toString() use where you want 
    }