2016-03-29 14 views
0

Json ayrıştırma işlemini POSTMAN API'sı üzerinde yaptığımız POSTMAN API'sı üzerinden yapıyorum ve POSTMAN'a POSTMAN'a giriş detaylarını deniyorum: - kullanıcı adı ve şifre ve eğer detaylar doğru POSTMAN, yanıtı JSON STRING içinde geri döndürecek. Bunu çalıştırdığımda, arkada herhangi bir veri elde edemiyorum. Bu beni beklenmedik bir yanıt kodu 400.406.404Voleybol kütüphanesinde beklenmedik cevap kodu ve json dizesini alamadı

MainActivity.java

package com.dropouts.copylogin; 



import android.content.Intent; 
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 com.android.volley.AuthFailureError; 
import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.JsonRequest; 
import com.android.volley.toolbox.StringRequest; 
import com.android.volley.toolbox.Volley; 


import org.json.JSONException; 
import org.json.JSONObject; 
import java.util.HashMap; 
import java.util.Map; 


public class MainActivity extends AppCompatActivity { 
    private EditText email; 
    private EditText password; 
    private Button login_register; 
    private RequestQueue requestQueue; 
    private StringRequest request; 
    private TextView tv; 
    private static String URL="http://192.168.1.18/rakyesh/test/rest/rest/login"; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     email= (EditText) findViewById(R.id.user); 

     password=(EditText)findViewById(R.id.pass); 
     login_register=(Button)findViewById(R.id.loginbtn); 
     requestQueue= Volley.newRequestQueue(this); 


     login_register.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       request = new StringRequest(Request.Method.POST, URL, new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         try { 

          JSONObject jsonObject = new JSONObject(response); 

          Log.e("Response of 192 returns username",">"+jsonObject.getString("username")); 

          if (jsonObject.names().get(0).equals("username")) { 

           Toast.makeText(getApplicationContext(), "SUCCESS"+ jsonObject.getString("username"),Toast.LENGTH_LONG).show(); 
           startActivity(new Intent(getApplicationContext(), Welcome.class)); 

          } else { 

           Toast.makeText(getApplicationContext(), "Error" + jsonObject.getString("error"), Toast.LENGTH_LONG).show(); 
          } 

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

        } 
       }, new Response.ErrorListener() { 

        @Override 
        public void onErrorResponse(VolleyError error) { 
        } 
       }) { 

        @Override 
        protected Map<String, String> getParams() throws AuthFailureError { 

         HashMap<String, String> hashMap = new HashMap<String, String>(); 
         hashMap.put("Content-Type","application/json; charset=utf-8"); 
         hashMap.put("email", email.getText().toString()); 
         hashMap.put("password", password.getText().toString()); 
         return hashMap; 

        } 
       }; 
       requestQueue.add(request); 

      } 

     }); 
    } 


} 

manifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    package="com.dropouts.copylogin"> 
<uses-permission android:name="android.permission.INTERNET"/> 

    <application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:theme="@style/AppTheme"> 
     <activity android:name=".MainActivity"> 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
     <activity android:name=".Welcome"/> 
    </application> 

</manifest> 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:layout_gravity="center_horizontal" 
    android:orientation="vertical" 
    tools:context="com.dropouts.copylogin.MainActivity"> 



    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/user" 
     android:hint="username" 
     android:inputType="text" 
     android:maxLines="1" 
     android:singleLine="true" 

     android:layout_marginTop="50dp" /> 

    <EditText 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textPassword" 
     android:ems="10" 
     android:maxLines="1" 
     android:singleLine="true" 
     android:id="@+id/pass" 
     android:hint="Pass" 
     android:layout_marginTop="42dp" 
     /> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="LOGIN/REGISTER" 
     android:id="@+id/loginbtn" 

     /> 
    <TextView 
     android:layout_marginTop="10dp" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/txt" 
     android:textAppearance="?android:textAppearanceLarge" 
     android:layout_below="@+id/loginbtn" 
     /></LinearLayout> 

WELCOME.JAVA

gösteren

Sen başlığındaki Content-Type olarak application/json geçiyordu ve bunu yerine JsonObjectRequest kullanmak daha iyidir json verileri göndermek istediğiniz data.If dize geçiyoruz

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" android:layout_height="match_parent"> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Welcome" 
     android:id="@+id/wlcmtxt" 
     android:textAppearance="?android:textAppearanceLarge" 
     android:layout_centerVertical="true" 
     android:layout_centerHorizontal="true" /> 

    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Logout" 
     android:id="@+id/log_out" 
     android:layout_alignParentTop="true" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" /> 
</RelativeLayout> 

cevap

0

welcome_activity.xml. Lütfen HashMap.it'den Content-Type başlığını kaldırmayı deneyebilirsiniz.

GÜNCELLEME: Burada

JSONObject params = new JSONObject(); 
//build your params 
JsonObjectRequest jsObjRequest = new JsonObjectRequest 
     (Request.Method.POST, url, params, new Response.Listener<JSONObject>() { 

    @Override 
    public void onResponse(JSONObject response) { 
     //parse the response for the result 
    } 
}, new Response.ErrorListener() { 

    @Override 
    public void onErrorResponse(VolleyError error) { 
     // TODO Auto-generated method stub 

    } 
}); 
+0

... i söyledi kod eklendi –

0

HttpStatus.java hata kodu doktor bulunmaktadır.

int SC_NOT_FOUND = 404; 
int SC_BAD_REQUEST = 400; 
int SC_NOT_ACCEPTABLE; 

aşağıda standards.These kodu karşılamayan isteğiniz yönteminde konulmalıdır teslim 'getHeaders()' fakat içinde 'getParams()'.

hashMap.put("Content-Type","application/json; charset=utf-8"); 

Burada StringSquest by post in volley. Ravi Teja u bana ben kodunda kullanabilirsiniz JsonObjectRequest ile tüm örnek sağlayabilir @

https://gist.github.com/mombrea/7250835

+0

nasıl kullanılacağını hiçbir fikrim yok ama yine de ben alıyorum aynı hata .. pls bunu düzeltmek için bana hepl –

İlgili konular