2017-02-14 40 views
0

Я работаю над проектом android, в котором я должен позвонить APIs на английском языке, когда мобильный местный язык является арабским. я не получаю APIURlString на английском языке. Мой файл вызова API (PackageapiCall.class) выглядит следующим образом:API-вызов, когда телефон на местном языке является арабским в андроиде

package com.example.app.roamer.utils;

import android.content.Context; 
import android.content.SharedPreferences; 
import android.os.AsyncTask; 
import android.os.Looper; 
import android.util.Log; 

import com.android.volley.AuthFailureError; 
import com.android.volley.Request; 
import com.android.volley.Response; 
import com.android.volley.VolleyError; 
import com.android.volley.toolbox.StringRequest; 
import com.example.app.roamer.Constant; 
import com.example.app.roamer.R; 
import com.example.app.roamer.activities.SplashScreen; 
import com.example.app.roamer.app.AppController; 
import com.example.app.roamer.fragments.AlltripsFragment; 
import com.example.app.roamer.helper.DateFormatsHelper; 
import com.example.app.roamer.fragments.TaTripsFragment; 
import com.example.app.roamer.models.AllTrips; 
import com.example.app.roamer.tasks.GenerateTokenOperation; 
import com.example.app.roamer.tasks.ParsingOperation; 

import java.text.DateFormat; 
import java.util.Date; 
import java.util.HashMap; 
import java.util.List; 
import java.util.Locale; 
import java.util.Map; 

import static com.example.app.roamer.activities.HomeActivity.TAG; 

/** 
* Created by manish on 22-12-2016. 
*/ 

public class PackageApicalls { 
    private Request.Priority priority = Request.Priority.HIGH; 
    Context ctx; 
    private List<AllTrips.TripsBean> allTripsByMobileUserIDNewData, allTripsByMobileUserIDNewData1; 
    AlltripsFragment alltripsFragment; 
    TaTripsFragment taTripsFragment; 
    Boolean splashScreenApiCall=false; 
    SharedPreferences sharedPreferences; 
    private int mobileUserId; 

    public PackageApicalls(Context ctx, AlltripsFragment alltripsFragment) { 
     this.ctx=ctx; 
     this.alltripsFragment=alltripsFragment; 
    } 
    public PackageApicalls(Context ctx, TaTripsFragment taTripsFragment) { 
     this.ctx=ctx; 
     this.taTripsFragment=taTripsFragment; 
    } 
    public PackageApicalls(Context ctx) { 
     this.ctx=ctx; 
    } 


    public void getalltripdetails() { 

    // String gettodaysdate="02-02-2016"; 
     DateFormatsHelper dateFormatsHelper = new DateFormatsHelper(); 
     String gettodaysdate = dateFormatsHelper.gettodaysdate(); 
     sharedPreferences = ctx.getSharedPreferences(Constant.MyPREFERENCES, Context.MODE_PRIVATE); 
     mobileUserId = sharedPreferences.getInt("mobileUserId", 0); 

     //mobileUserId=1; 
     String url = ctx.getResources().getString(R.string.alltrips_api_url,mobileUserId,gettodaysdate); 
     Log.d(TAG, "manish-url-packageapicalls"+url); 
     StringRequest postRequest = new StringRequest(Request.Method.GET, url, 
       new Response.Listener<String>() { 
        @Override 
        public void onResponse(String response) { 
         if (Looper.myLooper() == Looper.getMainLooper()) { 
          Log.d(TAG, "main thread-true"); 
         } else { 
          Log.d(TAG, "main thread-false"); 
         } 
         // response 
         Log.d("Response", response); 

         allTripsByMobileUserIDNewData = parsejson(response); 
//       setupui(allTripsByMobileUserIDNewData); 
         Log.d("manishbutola", "onResponse: New Data arrived"); 
         // pDialog.hide(); 
        } 
       }, 
       new Response.ErrorListener() { 
        @Override 
        public void onErrorResponse(VolleyError error) { 
         // TODO Auto-generated method stub 
         Log.d("manishbutola", "getalltripdetailserror => " + error.toString()); 
         new GenerateTokenOperation(ctx).execute(); 
         if(new GenerateTokenOperation(ctx).getStatus()== AsyncTask.Status.FINISHED){ 
          getalltripdetails(); 
         } 
         /*if(GenerateTokenOperation(ctx).Status == AsyncTask.Status.FINISHED){ 
          // START NEW TASK HERE 
         }*/ 


        } 
       } 
     ) { 
      @Override 
      public Map<String, String> getHeaders() throws AuthFailureError { 
       Map<String, String> params = new HashMap<String, String>(); 
       sharedPreferences = ctx.getSharedPreferences(Constant.MyPREFERENCES, Context.MODE_PRIVATE); 
       String token_value = sharedPreferences.getString("token", null); 
       String authorizedtoken = "bearer" + " " +token_value; 
       //params.put("User-Agent", "Nintendo Gameboy"); 
       Log.d("packageApiCalls", "authorizedtoken: "+ authorizedtoken); 
       params.put("Authorization", authorizedtoken); 
       return params; 
      } 

      @Override 
      public Priority getPriority() { 
       return priority; 
      } 
     }; 
     AppController.getInstance().addToRequestQueue(postRequest); 
     //return parsejson; 
     // List<AllTrips.TripsBean> allTrips=db.getAllTripsByMobileUserID(1); 
    } 
    private List<AllTrips.TripsBean> parsejson(String response) { 
     try { 
      if(Constant.splashScreenApiCall){ 
       new ParsingOperation(ctx).execute(response); 

      } 
      else{ 
       new ParsingOperation(ctx,alltripsFragment).execute(response); 

      } 

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

} 

My `gettodaydate` method as follows: 

public String gettodaysdate(){ 
     DateFormat formatter; 
     formatter = new SimpleDateFormat("MM-dd-yyyy",Locale.ENGLISH); 
     String result = formatter.format(new Date()); 

     /*DateFormat dateFormat = new SimpleDateFormat("MM-dd-yyyy"); 
     Date date = new Date();*/ 
//  return dateFormat.format(date); 
     return result; 
    } 

и, наконец, мой string.xml:

<string name="alltrips_api_ta_url" translatable="false">http://roamer.techmaster.in/Rest/api/GetAgentTrips?agentId="%1$d"&amp;isPreviousTrip=false&amp;date="%2$s"</string> 

Я ма получать журнал кота как:

Unexpected response code 400 for http://roamer.techmaster.in/Rest/api/GetTrips?mobileUserId=١&isPreviousTrip=false&date=02-14-2017 

, как я вижу, что mobileUserId 1 и собирается преобразовать в URL в Арабский, когда url собирается попасть на сервер. приложение будет разбиваться. Пожалуйста, помогите мне. Спасибо.

+0

где U меняется локаль? – rafsanahmad007

+0

местный язык или что-то еще? –

+0

где код для изменения языка? и в вашем 'StringRequest', как вы добавляете парметер? – rafsanahmad007

ответ

0

После борьбы я получил идею и она работала, это: я изменить INT в строку, как :
String userId = String.valueOf(mobileUserId);, а затем я делаю < string name="alltrips_api_ta_url" translatable="false">http://roamer.techmaster.in/Rest/api/GetAgentTrips?agentId="%1$d"&amp;isPreviousTrip=false&amp;date="%2$s"</string> к

<string name="alltrips_api_ta_url" translatable="false">http://roamer.techmaster.in/Rest/api/GetAgentTrips?agentId="%1$s"&amp;isPreviousTrip=false&amp;date="%2$s"</string> 

, а затем я поставил

String url = ctx.getResources().getString(R.string.alltrips_api_url,userId ,gettodaysdate); 
0

в вашем getHeaders() добавить Content-Type

@Override 
public Map<String,String> getHeaders() throws AuthFailureError { 
    HashMap<String,String> headers = new HashMap<String, String>(); 
    headers.put("Content-Type", "application/json; charset=utf-8"); 
    return headers; 
} 

переопределять Также getBodyContentType() и вернуть "application/x-www-form-urlencoded; charset=UTF-8";

@Override 
    public String getBodyContentType() { 
     return "application/x-www-form-urlencoded; charset=UTF-8"; 
    } 
+0

Я сделал это, но я получаю такую ​​же проблему и регистрируюсь следующим образом: BasicNetwork.performRequest: Неожиданный код ответа 400 для http://roamer.techmaster.in/Rest/api/GetTrips?mobileUserId=1&isPreviousTrip=false&date=02-14 -2017 –

+0

, когда язык - английский, ur api дает ответ? – rafsanahmad007

+0

да, он отлично работает, когда язык является английским, но моя проблема заключается в том, что locale является арабским, а не английским. –