package com.example.rami_.retrofitapp;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import java.util.List;
import okhttp3.OkHttpClient;
import retrofit2.Call;
import retrofit2.Callback;
import retrofit2.Response;
import retrofit2.Retrofit;
import retrofit2.converter.gson.GsonConverterFactory;
public class MainActivity extends AppCompatActivity {
TextView nametxt, agetxt, phonetxt, emailtxt;
Button retrieveBtn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
nametxt = (TextView) findViewById(R.id.nametxt);
agetxt = (TextView) findViewById(R.id.agetxt);
phonetxt = (TextView) findViewById(R.id.phonetxt);
emailtxt = (TextView) findViewById(R.id.emailtxt);
retrieveBtn = (Button) findViewById(R.id.retrieveBtn);
retrieveBtn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
fetchData();
}
});
}
private void fetchData() {
OkHttpClient client = new OkHttpClient();
Gson gson = new GsonBuilder()
.setLenient()
.create();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Api.BASE_URL)
.client(client)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
Api api = retrofit.create(Api.class);
Call<List<Details_Pojo>> call = api.getstatus();
call.enqueue(new Callback<List<Details_Pojo>>() {
@Override
public void onResponse(Call<List<Details_Pojo>> call, Response<List<Details_Pojo>> response) {
List<Details_Pojo> adslist = response.body();
String name = adslist.get(0).getName();
String age = adslist.get(0).getAge();
String phone = adslist.get(0).getPhone();
String email = adslist.get(0).getEmail();
nametxt.setText(name);
agetxt.setText(age);
phonetxt.setText(phone);
emailtxt.setText(email);
}
@Override
public void onFailure(Call<List<Details_Pojo>> call, Throwable t) {
Toast.makeText(MainActivity.this, ""+t.getMessage().toString(), Toast.LENGTH_SHORT).show();
}
});
}
}
模型类
package com.example.rami_.retrofitapp;
import com.google.gson.annotations.Expose;
import com.google.gson.annotations.SerializedName;
/**
* Created by Android on 1/6/2018.
*/
public class Details_Pojo {
@SerializedName("Name")
private String Name;
@SerializedName("Age")
private String Age;
@SerializedName("Phone")
private String Phone;
@SerializedName("Email")
private String Email;
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public String getAge() {
return Age;
}
public void setAge(String age) {
Age = age;
}
public String getPhone() {
return Phone;
}
public void setPhone(String phone) {
Phone = phone;
}
public String getEmail() {
return Email;
}
public void setEmail(String email) {
Email = email;
}
}
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
package com.example.rami_.retrofitapp;
import java.util.List;
import retrofit2.Call;
import retrofit2.http.GET;
/**
* Created by Android on 1/6/2018.
*/
public interface Api {
String BASE_URL = "http://10.0.2.2/retrofitapp/";
@GET("fetch_data.php")
Call<List<Details_Pojo>> getstatus();
}
php代码与数据库连接,但这里我们没有从数据库中获取任何数据,我们现在只使用respoans
<?php
require "init.php";
$name = $_GET["Name"];
$age = $_GET["Age"];
$phone = $_GET["Phone"];
$email = $_GET["Email"];
$sql = "select * from login_info where name ='$name'";
$result = mysqli_query($con, $sql);
if(mysqli_num_rows($result) > 0)
{
$status ="exist";
}
else
{
$sql = "insert into login_info(name, age, phone, email) VALUES ('$name', '$age', '$phone',$email)";
if (mysqli_query($con, $sql))
{
$status ="ok";
}
else
{
$status ="error";
}
}
$response = array('Name' => "Rami",'Age' => "24",'Phone' =>
"01004562638",'Email' => "24");
echo json_encode($response);
mysqli_close($con);
?>
请发布您的JSON响应,以便我们可以提供更多帮助。当解析API的代码希望JSON数组中有一个列表,但改进型却发现了一个字符串,从而导致异常,阻止改进型完成解析过程时,就会发生此错误。
换句话说,你期待着这样的回应:
{
[
{ .. }
]
}
但你收到的却是:
{
"SOME STRING"
}
我已经搜索了其他相关的问题,但找不到我的答案。 这是我的JSON:named
我试图使用从API返回的retfit和GSON解析字符串数组: 这是在特定情况下(情况2)响应的样子: 在本例(情况2)中,我从registfit/gson得到一个错误: 我这样调用API:
我在尝试使用JsonConverter填充我的列表视图时遇到此异常 com . Google . gson . jsonsyntaxexception:Java . lang . illegalstateexception:应为BEGIN_ARRAY,但在第1行第1列path处为字符串 这是我的JsonConverter类: 这是我的模型类: 我这样称呼它: 不知道我是不是做错了什么
问题内容: 我在解析json数据时遇到此错误: 我找不到解决方案。我的json数据是: 我将图像转换为字节数组,如下所示: 我正在将图标从字节数组转换为Bitmap,如下所示: 我反序列化JSON响应的代码: 这是我的ProjectContainer类: 这是Project类: 如果您能帮助我解决这个问题,我将不胜感激。提前致谢 问题答案: 当您尝试解析该字段时会引发Exception ,因为在J
问题内容: 我在解析JSON数据时遇到以下错误: 预期为begin_array,但在第1行第34列处为STRING 我找不到解决办法。我的JSON是以下内容: 这是我的PersonContent类: 以下是人员类别: 这是我反序列化前面提到的JSON数据的代码 我尝试了在这里找到的所有解决方案,但找不到相同的JSON。 问题答案: 错误出现在您收到的json中:您的类需要一个数组,因为 但是然后在