1

나는이 엔티티에서 "엔티티"의 모든 정보를 App Engine 데이터 저장소의 "ContactInfo"에서 가져 와서 문자열에 저장하는 코드를 작성했습니다.데이터 저장소의 끝점 쿼리

내 질문은 어떻게 안드로이드 끝점에서 특정 쿼리를 만들 수 있습니다. 나는 엔티티에 예를 들어 특정 이름이나 우편 번호 인 항목 만 표시하려고합니다. 다음은 전체 엔터티를 문자열에 넣어야하는 것입니다.

package com.indeeditis; 

import java.io.IOException; 



import java.util.Date; 

import org.json.JSONException; 

import android.os.AsyncTask; 
import android.content.Context; 
import android.content.Intent; 

import com.indeeditis.MainActivity.EndpointsTask; 
import com.indeeditis.contactinfoendpoint.Contactinfoendpoint; 
import com.indeeditis.contactinfoendpoint.model.CollectionResponseContactInfo; 
import com.indeeditis.contactinfoendpoint.model.ContactInfo; 

import com.google.api.client.extensions.android.http.AndroidHttp; 
import com.google.api.client.http.HttpRequest; 
import com.google.api.client.http.HttpRequestInitializer; 
import com.google.api.client.json.jackson.JacksonFactory; 


import android.os.Bundle; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.Spinner; 
import android.app.Activity; 
import android.view.View.OnClickListener; 


public class FinderActivity extends Activity implements OnClickListener { 





@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.finder); 

    Button start = (Button)findViewById(R.id.button9000); 
    start.setOnClickListener(this); 


} 



public class EndpointsTask extends AsyncTask<Context, Integer, Long> { 




    protected Long doInBackground(Context... contexts) { 

     Contactinfoendpoint.Builder endpointBuilder = new Contactinfoendpoint.Builder(
      AndroidHttp.newCompatibleTransport(), 
      new JacksonFactory(), 
      new HttpRequestInitializer() { 
      public void initialize(HttpRequest httpRequest) { } 
      }); 
    Contactinfoendpoint endpoint = CloudEndpointUtils.updateBuilder(
    endpointBuilder).build(); 





    try { 

    String apples = endpoint.listContactInfo().execute().toString(); 



     Log.w("myApp", apples); 



    } catch (IOException e) { 
    e.printStackTrace(); 
    } 
     return (long) 0; 
    } 




    } 



@Override 
public void onClick(View v) { 
    // TODO Auto-generated method stub 

    new EndpointsTask().execute(getApplicationContext()); 

} 





} 

답변

1

android에서 클라우드 종점을 통해 쿼리 요청을 보내는 동안 필터를 적용하려면 매개 변수를 설정하는 옵션을 추가해야합니다. 특정 contacttype를 조회해야하는 경우 나 짧은 예를

1로 설명합니다, 가정 당신의 CONTACTINFO 엔드 포인트는 이제 2 곳

name = ndb.StringProperty() 
contacttype = ndb.StringProperty() // assume this can have values personal or business 

이 있고, 다음 앱 엔진 코드는 쿼리 방법이 있어야합니다 속성 contacttype을 기반으로 필터링합니다. 엔드 포인트는 사용자의 입력 매개 변수를 전달하여이 조회 메소드를 호출해야합니다.

3

은 이제 REST 경로 및 방법의 유형을 정의 할 클래스 Listcontactinfo는 설정 contacttype 매개 변수

@com.google.api.client.util.Key 
private String contacttype; 


public String getContacttype() { 
    return contacttype; 
    } 

    public Listcontactinfo setContacttype(String contacttype) { 
    this.contacttype = contacttype; 
    return this; 
    } 

4, 마지막 반면에 옵션을 포함해야한다, 안드로이드에서 필요한 매개 변수를 보낼 수

String apples = endpoint.listContactInfo().setContacttype("personal").execute().toString(); 

이것은 당신이 값 "페이지와 contacttype을 가진 개체를 조회 할 예제의 경우입니다 : 당신의 안드로이드 코드에서 엔드 포인트 메서드를 호출하면, 당신은 같은 것을 할 것입니다 setContacttype를 사용하여 값을 전달한다 개인 "

관련 문제