2017-12-19 23 views
1

나를 제외하고 내 서버에서 모든 사용자를 얻으려는 코드를 만들려고했습니다.volley post arrayrequest not working

@overwrite 응답으로 점프하지 않습니다.

나는 sombody가 나를 도울 수 있기를 바랍니다.

XD didnt 한을 작동하지 않는 이유는 일 지금 찾고 있었어요는 확률값을 발견했다.

내 PHP 코드 :

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.util.Log; 
import android.widget.Adapter; 
import android.widget.ListView; 

import com.android.volley.Request; 
import com.android.volley.RequestQueue; 
import com.android.volley.Response; 
import com.android.volley.toolbox.JsonArrayRequest; 
import com.android.volley.toolbox.Volley; 
import com.example.android.app.Data.LoginRequest; 
import com.example.android.app.Data.RegistryRequest; 
import com.example.android.app.Data.UserlistRequest; 
import com.example.android.app.Tools.User; 
import com.example.android.app.Tools.UserAdapter; 

import org.json.JSONArray; 
import org.json.JSONException; 
import org.json.JSONObject; 

import java.util.ArrayList; 
import java.util.Map; 

public class listeAndererActivity extends AppCompatActivity { 
    private String Tag="lsiteanderer"; 
    private ArrayList<User> userListe = new ArrayList<>(); 
    private UserAdapter useradapter; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_liste_anderer); 
     String ownname="juli"; 

     /////VERSION 2/////////////////////////////////////////////////////////////// 

     Response.Listener<JSONArray> responseListenerJSONArray=new Response.Listener<JSONArray>() { 

      @Override 
      public void onResponse(JSONArray response) { 
       try { 
        for (int i = 0; i < response.length(); i++) { 
         JSONObject obj = response.getJSONObject (i); 
         User user = new User (obj.getString ("name"),obj.getInt("user_id")); 

         Log.v(Tag, "name in der for schlife ist"+user.getName()); 
         userListe.add(user); 
        } 
       } catch (JSONException e) { 
        e.printStackTrace(); 
       } 
      } 
     }; 

     useradapter=new UserAdapter(this, userListe); 

     UserlistRequest userlistRequest = new UserlistRequest(ownname, responseListenerJSONArray); 
     RequestQueue queue= Volley.newRequestQueue(listeAndererActivity.this); 
     queue.add(userlistRequest); 

     ListView listView = (ListView) findViewById(R.id.AndererListe); 

     listView.setAdapter(useradapter); 
    } 
} 

내 Reqest 클래스 : 모두가 함께 모여 JAVA에서

<?php 
    $con = mysqli_connect("localhost", "userID", "password", "database"); 

    $name = $_POST["name"]; 
    $passwort = $_POST["passwort"]; 

    $statement = mysqli_prepare($con, "SELECT * FROM user WHERE name = ? AND passwort = ?"); 
    mysqli_stmt_bind_param($statement, "ss", $name, $passwort); 
    mysqli_stmt_execute($statement); 

    mysqli_stmt_store_result($statement); 
    mysqli_stmt_bind_result($statement, $userID, $name, $vorname, $nachname, $passwort); 

    $response = array(); 
    $response["success"] = false; 

    while(mysqli_stmt_fetch($statement)){ 
     $response["success"] = true; 
     $response["name"] = $name; 
     $response["vorname"] = $vorname; 
     $response["nachname"] = $nachname; 
     $response["passwort"] = $passwort; 
    } 

    echo json_encode($response); 
?> 

import com.android.volley.Request; 
import com.android.volley.Response; 
import com.android.volley.toolbox.JsonArrayRequest; 
import com.android.volley.toolbox.JsonObjectRequest; 
import com.android.volley.toolbox.StringRequest; 

import org.json.JSONArray; 

import java.lang.reflect.Array; 
import java.util.HashMap; 
import java.util.Map; 

/** 
* Created by Juli on 17.12.2017. 
*/ 

public class UserlistRequest extends JsonArrayRequest { 

    private static final String userlistRequestUrl="https://unityentertainment.000webhostapp.com/OtherUser.php"; 
    private Map<String,String> params; 


    public UserlistRequest(String name, Response.Listener<JSONArray> listener){ 
     super(Request.Method.POST, userlistRequestUrl, listener, null); 

     params= new HashMap<>(); 
     params.put("name", name); 
    } 

    // public UserlistRequest(String ownname, Listener<JSONArray> responseListenerJSONArray) { 
    // super(); 
    // } 

    @Override 
    public Map<String, String> getParams() { 
     return params; 
    } 
} 

내 데이터 클래스 :

public class User { 
    private String name; 
    private int user_id; 

    public User(String name, int user_id){ 
     this.name=name; 
     this.user_id=user_id; 
    } 

    public String getName() { 
     return name; 
    } 

    public int getUser_id() { 
     return user_id; 
    } 
} 
,

내 어댑터 :

import android.app.Activity; 
import android.content.Context; 
import android.support.annotation.NonNull; 
import android.support.annotation.Nullable; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ImageView; 
import android.widget.TextView; 

import com.android.volley.Response; 
import com.example.android.app.R; 
import com.example.android.app.ListeAndererActivity; 

import java.util.ArrayList; 

public class UserAdapter extends ArrayAdapter<User> { 
    public UserAdapter(ListeAndererActivity activity, ArrayList<User> userArrayList) { 
     super((Context) activity, 0 ,userArrayList); 
    } 

    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     // Check if the existing view is being reused, otherwise inflate the view 
     View listItemView = convertView; 
     if(listItemView == null) { 
      listItemView = LayoutInflater.from(getContext()).inflate(
        R.layout.itemlist_user, parent, false); 
     } 

     // Get the {@link AndroidFlavor} object located at this position in the list 
     User currentAndroidFlavor = getItem(position); 

     // Find the TextView in the list_item.xml layout with the ID version_name 
     TextView nameTextView = (TextView) listItemView.findViewById(R.id.itemlistUser_TextView); 
     // Get the version name from the current AndroidFlavor object and 
     // set this text on the name TextView 
     nameTextView.setText(currentAndroidFlavor.getName()); 

     return listItemView; 
    } 
} 

답변

0

당신은 당신의 요청 및 응답을 추적하고 정지 위치를 볼 수 있습니다. Postman 또는 firefox/chrome 플러그인과 같은 것을 사용하여 코드의 백엔드 PHP 나머지 API 부분을 테스트하고 가능성을 줄이고 값을 인쇄하여 테스트 장치 로그를 모니터링하고 코드가 멈추는 곳 또는 의도하지 않은 동작을 확인하십시오.

+0

답장을 보내 주셔서 감사합니다.하지만 우편 배달부의 작동 방식을 알 수 없습니다. – JuSi

+0

이 firefox 플러그인을 사용하십시오. https://addons.mozilla.org/en-US/firefox/addon/restclient/ 우편 배달부보다 간단합니다. –

+0

본 적이 있습니까? 내가 디버그 응답을 이미 어쩌면 당신은 그것을 밖으로 영리하게 ;-) – JuSi

0

은 배열 요청에서 매개 변수가 작동하지 않는다는 것을 알아 냈습니다. 누구든지이 문제를 해결하는 방법을 알고 있습니까?

0

제 의견으로는 먼저 postman과 같은 API 테스트 소프트웨어를 사용해야합니다. postman이 좋습니다. 또한이 내가 좋아했던 나

$stmt=$db->prepare("SELECT * FROM search WHERE designation LIKE ?"); 
    $stmt->bind_param("s",$a); 
    $stmt->execute(); 
    $d=$stmt->get_result(); 
    while($b=$d->fetch_array(MYSQLI_ASSOC)){ 
     $result[]=$b; 
} 
//you could then do something like this 
$response['test']=$result; 
echo json_encode($result); 
+0

나는 어떻게 발리 라이브러리의 jsonarray 요청에 post 메소드를 사용할 수 있습니까? 그래서 내 PHP 스크립트 dilivert 얻을. jsonstring 요청으로 인해 post 메소드를 사용할 수 있습니다. @Override public Map getParams() { return params; } – JuSi

+0

발리 요청에 StringRequest와 같은 문자열 요청의 게시물 요청을 정의합니다. str = new StringRequest (Request.Method.POST – junaidshah

+0

아래 답변보기 – JuSi

0

근무 :

public class UserlistRequest extends JsonArrayRequest { 

    private static final String userlistRequestUrl="https://unityentertainment.000webhostapp.com/OtherUser.php"; 
    private Map<String,String> params; 

    public UserlistRequest(String name, Response.Listener<JSONArray> listener) { 
     super(Method.POST, userlistRequestUrl, (String) null, listener, null); 



    // public UserlistRequest(String name, Response.Listener<JSONArray> listener){ 
    // super(Request.Method.POST, userlistRequestUrl, listener, null); 


    params= new HashMap<>(); 
     params.put("name", name); 
     params.put("name", name); 

} 

    // public UserlistRequest(String ownname, Listener<JSONArray> responseListenerJSONArray) { 
    // super(); 
    // } 

    @Override 
    public Map<String, String> getParams() { 
     return params; 
    } 
} 

그러나

0

사람이 내 PHP 서버에 문자열을 전송하는 방법을 알고 않음의 getParams을 사용하지 말아.

Like $name = $_POST["name"]; 

와 Jsonarray

while(mysqli_stmt_fetch($statement)){ 
     $temp=[ 
     "name" = $colName; 
     "vorname" = $colVorname; 
     "nachname" = $colNachname; 
     "passwort" = $colPasswort]; 
     array_push($info, $temp); 
    } 
    $response["userlist"]=$info; 
    echo json_encode($info); 

내가 발리에서 Jsonarrayrequest 그것을 시도했지만 내가 그것을 overite을 시도하도록지도의 변형을 surporting하지 여전히 여기에 작동하지 얻을 것은 코드

에게 있습니다
public class UserlistRequest extends JsonRequest<JSONArray> { 

    private static final String userlistRequestUrl="https://unityentertainment.000webhostapp.com/OtherUser.php"; 

    HashMap<String, String> params = new HashMap<>(); 
    /** 
     * Creates a new request. 
     * 
     * @param url   URL to fetch the JSON from 
     * @param listener  Listener to receive the JSON response 
     * @param errorListener Error listener, or null to ignore errors. 
     */ 
     public UserlistRequest(String name, Response.Listener<JSONArray> listener) { 
      super(Method.POST, userlistRequestUrl, null, listener, null); 
      params.put("name", name); 
     } 

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


      return params; 
     } 

     @Override 
     protected Response<JSONArray> parseNetworkResponse(NetworkResponse response) { 
      try { 
       String jsonString = 
         new String(response.data, HttpHeaderParser.parseCharset(response.headers)); 
       return Response.success(new JSONArray(jsonString), 
         HttpHeaderParser.parseCacheHeaders(response)); 
      } catch (UnsupportedEncodingException e) { 
       return Response.error(new ParseError(e)); 
      } catch (JSONException je) { 
       return Response.error(new ParseError(je)); 
      } 
     } 
    } 

클래스가 호출되면 위 코드에서 확인할 수 있습니다. 지금 몇 달 동안 솔루션을 찾고 있지만 여전히 대답하고 있습니다. 서버 측에서 그걸 좋아. 문자열을 서버로 보내고 배열을 가져 오는 사람이 많이 있어야합니까? 나를 위해 너무 복잡합니다. 나를 도우려는 모든 사람들에게 행복합니다 ;-) 모두에게 감사드립니다!