2016-07-25 46 views
0

生病尝试在这里具体。所以我创建了最基本的可能的代码来测试它,我仍然无法获取数据,请帮助!这里是我的代码:如何解析JSON数据与Android上的改造

这是我的本地服务器上的JSON输出: http://localhost:8080/KokosinjacRestfull/rest/textService/mudriPevci

[{ “ID”:1, “子类别”: “MudriPevci”, “称号”:“Mujo我 haso“,”description“:”Krenuli do Grada“,”author“:”luka“,”date“:”2016-06-13“},{”id“:3,”subCategory“:”mudriPevci“, “头衔”: “PERICA”, “说明”: “在济napravio Haos霸 ”, “作家”: “卢卡”, “日期”: “2016年6月13日”}]

文本。等级:

package kokosinjac.com.digiart.koktest.models; 

import com.google.gson.annotations.Expose; 
import com.google.gson.annotations.SerializedName; 


public class Text { 

@SerializedName("id") 
@Expose 
private Integer id; 
@SerializedName("subCategory") 
@Expose 
private String subCategory; 
@SerializedName("title") 
@Expose 
private String title; 
@SerializedName("description") 
@Expose 
private String description; 
@SerializedName("author") 
@Expose 
private String author; 
@SerializedName("date") 
@Expose 
private String date; 

/** 
* No args constructor for use in serialization 
* 
*/ 


/** 
* 
* @param id 
* @param author 
* @param title 
* @param subCategory 
* @param description 
* @param date 
*/ 


/** 
* 
* @return 
* The id 
*/ 
public Integer getId() { 
    return id; 
} 

/** 
* 
* @param id 
* The id 
*/ 
public void setId(Integer id) { 
    this.id = id; 
} 

/** 
* 
* @return 
* The subCategory 
*/ 
public String getSubCategory() { 
    return subCategory; 
} 

/** 
* 
* @param subCategory 
* The subCategory 
*/ 
public void setSubCategory(String subCategory) { 
    this.subCategory = subCategory; 
} 

/** 
* 
* @return 
* The title 
*/ 
public String getTitle() { 
    return title; 
} 

/** 
* 
* @param title 
* The title 
*/ 
public void setTitle(String title) { 
    this.title = title; 
} 

/** 
* 
* @return 
* The description 
*/ 
public String getDescription() { 
    return description; 
} 

/** 
* 
* @param description 
* The description 
*/ 
public void setDescription(String description) { 
    this.description = description; 
} 

/** 
* 
* @return 
* The author 
*/ 
public String getAuthor() { 
    return author; 
} 

/** 
* 
* @param author 
* The author 
*/ 
public void setAuthor(String author) { 
    this.author = author; 
} 

/** 
* 
* @return 
* The date 
*/ 
public String getDate() { 
    return date; 
} 

/** 
* 
* @param date 
* The date 
*/ 
public void setDate(String date) { 
    this.date = date; 
} 

}

阿比interface.class:

包kokosinjac.com.digiart.koktest.retrofit;

import java.util.ArrayList;

import kokosinjac.com.digiart.koktest.models.Text;进口 retrofit2.Call; import retrofit2.http.GET;导入retrofit2.http.Path;

公共接口RetrofitAPInterface {

@GET("rest/textService/{subCategory}") 
Call<ArrayList<Text>> getText(@Path("subCategory") String subCat); 

}

类显示在手机上的数据(你不需要的一些字符串注意,只看改造的一部分,我; VE使它一样简单我可以, subCatData.class:

public static final String BASE_URL ="http://localhost:8080/KokosinjacRestfull/"; 
HashMap<String,String> dataArr; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    setContentView(R.layout.activity_sub_cat_data); 
    final TextView tView = (TextView) findViewById(R.id.textView); 
    Intent intent = getIntent(); 
    String urlSecondPartBefore = intent.getStringExtra("passedSubCat"); 
    String urlSecondPartAfter = urlSecondPartBefore.replaceAll("\\s", ""); 
    String urlFirstPart = intent.getStringExtra("passedUrlFirstPart"); 
    String catName = intent.getStringExtra("passedCatName"); 
    String data = null; 
    // TextView test = (TextView) findViewById(R.id.test); 


    Retrofit retrofit = new Retrofit.Builder() 
      .baseUrl(BASE_URL) 
      .addConverterFactory(GsonConverterFactory.create()) 
      .build(); 
    RetrofitAPInterface apiService = retrofit.create(RetrofitAPInterface.class); 
    Call<ArrayList<Text>> call = apiService.getText("mudriPevci"); 
    call.enqueue(new Callback<ArrayList<Text>>() { 
     @Override 
     public void onResponse(Call<ArrayList<Text>> call, Response<ArrayList<Text>> response) { 
      int statusCode = response.code(); 
      ArrayList<Text> textArray = response.body(); 
      for (Text t : textArray){ 
       tView.setText(t.getDescription()); 
      } 
      // Log.i("DATA", "onResponse: "+text.getId()); 
     } 

     @Override 
     public void onFailure(Call<ArrayList<Text>> call, Throwable t) { 

     } 
    }); 

} 

}

我意识到整个数据集都会变成一个简单的标签,但它只是用于测试目的。尽管如此,我仍然无法取回任何东西,而且我也没有收到任何错误。帮助将不胜感激。谢谢!

+0

这个解决方案可能会帮助你,请检查出来http://stackoverflow.com/questions/33338923/how-to-parse-retrofit-json-response?rq=1 –

回答

1

我认为问题,您的网址如果你是测试您的应用程序与Android模拟器,然后尝试像"http://10.0.2.2:8080/"但如果你是测试设备,那么你需要通过你的机器IP地址,如"http://192.143.1.0/"并确保您的设备已连接到您的数据库所在的机器。

+0

我知道这个问题,因此我正在用我的模拟器进行测试。代码看起来好吗? – vibetribe93

+0

yess你的代码看起来像确定,但是因为你在你的URL中使用'localhost'可能会遇到问题,试着把''替代'localhost'放在''http://10.0.2.2:8080/“'。 –

+0

谢谢先生,它的工作原理!我试图直接在浏览器中测试它,但它不工作,只有在android工作室。谢谢您的帮助!! – vibetribe93

0

解析Android上的数据JSON我强烈建议使用JSOUP,您可以通过点击here来找到它,它很简单,直接,并且用户友好。非常容易学习。希望这可以帮助你!

+1

谢谢你的回复,这个问题是因为我将稍后使用改造来上传数据,所以我想我需要像api一样休息。 Thx – vibetribe93

0

的问题可能是你的BASE_URL你BASE_URL更改为 BASE_URL ="http://<your_local_ip_address>/KokosinjacRestfull/";

+0

我知道这个问题,因此我正在用我的模拟器进行测试。代码看起来好吗? – vibetribe93

0

我希望下面的例子可能有助于

 public void startFetching() { 
    mApiManager.getFlowerApi().getFlowers(new Callback<String>() { 
     @Override 
     public void success(String s, Response response) { 
      Log.d(TAG, "JSON :: " + s); 

      try { 
       JSONArray array = new JSONArray(s); 

       for(int i = 0; i < array.length(); i++) { 
        JSONObject object = array.getJSONObject(i); 

        Flower flower = new Flower.Builder() 
          .setCategory(object.getString("category")) 
          .setPrice(object.getDouble("price")) 
          .setInstructions(object.getString("instructions")) 
          .setPhoto(object.getString("photo")) 
          .setName(object.getString("name")) 
          .setProductId(object.getInt("productId")) 
          .build(); 

        mListener.onFetchProgress(flower); 

       } 

      } catch (JSONException e) { 
       mListener.onFetchFailed(); 
      } 


      mListener.onFetchComplete(); 
     } 

     @Override 
     public void failure(RetrofitError error) { 
      Log.d(TAG, "Error :: " + error.getMessage()); 
      mListener.onFetchComplete(); 
     } 
    }); 
} 
0

问题与您的网址的Android不能打你的本地主机即http://localhost:8080/KokosinjacRestfull/REST/textService/mudriPevci

您的服务器在特定的IP和运行。新IP将像 http://192.168.1.1/KokosinjacRestfull/rest/textService/mudriPevci