私はAndroidプログラミングの新機能でRetrofitを使用しています。ポストリクエストでオブジェクトのリストを取得する方法2.1.0 for android
ライブラリを改造し、GET
リクエストを作成し、パラメータを渡し、ページ上のすべてのオブジェクトをPHP
に持っていく例がたくさんあります。 POST
と同じことが可能ですか? 経由でパラメータを渡して、すべてのデータ(JSON
オブジェクト)を私のwebservice
から持ち出したいのですが、実装できません。
私に手伝ってくれる人がいますか?
ここでstackoverflowでドキュメントを勉強し、例を見ると、私は以下の例を作ることができますが、最初のオブジェクトだけを返します。
依存性:
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
MainActivity(ボタン内側):
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://192.168.101.36/json/")
.addConverterFactory(GsonConverterFactory.create())
.build();
ApiService apiService = retrofit.create(ApiService.class);
Call<User> call = apiService.validateUser(inputEmail.getText().toString(), inputSenha.getText().toString());
call.enqueue(new Callback<User>() {
@Override
public void onResponse(Call<User> call, Response<User> response) {
//Verifica se houve a conexão com sucesso ao webservice
if (!response.isSuccessful()) {
textView.setText("ERROR onResponde: " + response.code());
} else {
//requisição retona os dados com sucesso
String email = response.body().getEmail();
String senha = response.body().getPassword();
textView.append("email: " + email + " - password: " + senha + "\n");
}
}
@Override
public void onFailure(Call<User> call, Throwable t) {
t.printStackTrace();
textView.setText(t.getMessage());
}
});
インタフェース:
public interface ApiService {
@FormUrlEncoded
@POST("index.php")
Call<User> validateUser(
@Field("username") String username,
@Field("password") String password
);
}
クラスユーザー:
public class User {
private String username, email, password;
public String getUsername(){
return this.username;
}
public String getPassword(){
return this.password;
}
public String getEmail(){
return this.email;
}
}
のindex.php:
$email = $_POST['username'];
$senha = $_POST['password'];
if ($email == "[email protected]") {
echo '
{
"email":"' . $email . '",
"password":"' . $senha . '"
},
{
"email":"[email protected]",
"password":"654321"
},
{
"email":"[email protected]",
"password":"123456"
}
';
} else {
echo '
{
"email":"[email protected]",
"password":"987654"
},
{
"email":"[email protected]",
"password":"987654"
},
{
"email":"[email protected]",
"password":"987654"
}
';
}
私は、オブジェクトの配列として使用する場合はアプリでエラーが発生しました:
[{
"email":"[email protected]",
"password":"123456"
},
{
"email":"[email protected]",
"password":"123456"
}]
ベンは、私の愛するが、非常に非常にありがとうございました! それは100%働いた、それは週に苦しんでいた。 –