2016-12-13 11 views
0

私はアンドロイドで新しいです。サービス応答がnullですが、サービスURLがブラウザでOKです。実行します。私のアプリケーション画面を実行します。親切に間違ってやってください。OKHttpを使用して私の安らかなサービス応答を得ます。

私のフラグメント:

public class SpecificCountryScholorshipsFragment extends Fragment { 

OKHttpRequest okHttpRequest = new OKHttpRequest(); 
ArrayList<ScholorshipsModel> arrayList; 



ListView      list 
/***********************************************************************************/ 

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    try { 

     String getResponse = okHttpRequest.doGetRequest("http://192.168.100.7/scholar/web/app.php/scholarship"); 
     if (getResponse != null) { 
      //Toast.makeText(getActivity(), getResponse, Toast.LENGTH_LONG).show(); 

      JSONArray jArray = new JSONArray(getResponse); 

      for (int i = 0; i < jArray.length(); i++) { 

       JSONObject jRealObject = jArray.getJSONObject(i); 
       ScholorshipsModel model = new ScholorshipsModel(); 
       model.setScholorship_name(jRealObject.getString("name")); 
       model.setScholorship_detail(jRealObject.getString("details")); 
       model.setScholorship_pic(jRealObject.getString("picture")); 

       arrayList.add(model); 
       setAdapterValue(); 

      } 


     } 

     View view = inflater.inflate(R.layout.scholorship_listing_main, container, false); 
     list = (ListView) view.findViewById(R.id.Scholorshiplist); 



     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 

       Toast.makeText(getActivity(), "List is clicked ", Toast.LENGTH_LONG).show(); 

       Intent intent = new Intent(getActivity(), ScholorshipDetailActivity.class); 
       getActivity().startActivity(intent); 
      } 
     }); 

     return view; 
    } catch (JSONException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
return null; 
} 



    /***********************************************************************************/ 

private void setAdapterValue() { 
    ScholorshipAdapter adapter = new ScholorshipAdapter(getActivity(), R.layout.scholorship_listing, arrayList); 
    list.setAdapter(adapter); 
} 
} 

OKHttpクラス:

public class OKHttpRequest { 
OkHttpClient client = new OkHttpClient(); 

public static final MediaType JSON 
     = MediaType.parse("application/json; charset=utf-8"); 


public String doGetRequest(String url) throws IOException { 

    try { 
     Request request = new Request.Builder() 
       .url(url) 
       .build(); 

     Response response = client.newCall(request).execute(); 
     return response.body().string(); 

    } 
    catch (Exception e){ 
     e.printStackTrace(); 
    } 
    return null; 

} 



String doPostRequest(String url, String json) throws IOException { 
    RequestBody body = RequestBody.create(JSON, json); 
    Request request = new Request.Builder() 
      .url(url) 
      .post(body) 
      .build(); 
    Response response = client.newCall(request).execute(); 
    return response.body().string(); 
}} 
+0

あなたがPHPサービスを使用していて、ブラウザ上で応答を受け取るだけではなく、携帯電話からapiを呼び出すときにその声明をエコーし​​ている場合は、サービスを確認してください –

+0

サービスはうまくいきますが、 nullレスポンスを返す@NoumanShah –

+0

あなたは応答フォームサービスを受けていないと思うので、エラーがサービスにあるはずだと思います –

答えて

0

は、私はあなたのHaderでいくつかのパラメータが欠けているかにより、それまで体であってもよい応答があると思い、POSTMANによって最初にあなたのAPIをチェックサーバーから来ていません。また、私はクライアント - サーバ通信のためにvollyをお勧めします

+0

POSTMANで私のサービスが正常に動作しています@DynamicMind –

+0

vollyを使ってJSon/Stringリクエストを送信してから、ログをintResponseとOnErrorメソッドは、私はこのようにして、クライアント側とサーバー側の問題がどこにあるのかを知ることができます – DynamicMind

0

また、Rest-client(Chrome ans Firefoxに追加)を使用することができ、すべてうまく動作する場合はHttpsURLConnectionで試してみてください。