HttpResponse код состояния 400 андроид
Я отправляю запрос GET на сервер при входе в систему. Я ожидаю ответа 200, но при входе в систему я получаю код состояния 400. Позже, если я выйду из приложения и перезапущу его, я получу код состояния 200.
Что я хочу сделать:
- Я захожу на сайт.
- В ответ я получаю идентификатор устройства, EncodedAccountName и hostUrl.
- Я перенаправлен на другой URL, который состоит из этих параметров в URL. Затем я сопоставляю перенаправленный URL со строкой, и если она совпадает, я прекращаю загрузку веб-просмотра.
- Когда перенаправленный URL совпадает с моей строкой, я должен получить другие параметры из ответа вместе с кодом состояния 200, где вместо этого я получу 400.
Я путаюсь с таким поведением:
Вот мой код:
Login.java
myWebView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
loadingFinished = false;
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
if(!isRedirected) {
loadingFinished = true;
}
if(progressBar!=null && progressBar.isShowing()) {
progressBar.dismiss();
}
url= view.getUrl();
redirected= Uri.decode(url);
if(loadingFinished && ! isRedirected && redirected!=null && redirected.contains("redirect_uri="+endpointHost+"/AuthorizeDevice/index/"+deviceId+"?{StandardTokens}")) {
Utility.ProgressDialogFragment progDialog = new Utility.ProgressDialogFragment();
progDialog.show(getFragmentManager(), "Wait");
myWebView.stopLoading();
//String authorizationContentString = AuthenticateDeviceEndPoint+ "?encodedAccountName=" + encodedAccountName + "&deviceId=" + deviceId + "&hostUrl=" + hostUrl;
// authorizationContentString = authorizationContentString.replace("|", "%7C");
//UserInformation userInfo;
JSONParser parser = new JSONParser();
Object register;
try {
// userInfo
// String responseData= new AuthenticateDevice(Details1.this,myprogressDialog).execute(authorizationContentString).get();
String responseData = new AuthenticateDevice(Details1.this, progDialog, encodedAccountName, deviceId, hostUrl).execute(AuthenticateDeviceEndPoint).get();
register = parser.parse(responseData);
}
AuthenticateDevice.java
public class AuthenticateDevice extends AsyncTask<String, String, String> {
public Context mContext;
String responseBody = "" ;
ProgressDialog dialog;
Utility.ProgressDialogFragment progDia;
FragmentManager man;
String encodedAccName, deviceId, hostUrl;
@Override
protected void onPreExecute() {
super.onPreExecute();
/* progDia= new Utility.ProgressDialogFragment().newInstance();
progDia.show(man, "wait");
dialog=new ProgressDialog(mContext);
dialog.setTitle("Processing..");
dialog.setMessage("Please wait..");
dialog.show();*/
}
public AuthenticateDevice(Details1 myContext, ProgressDialogFragment progDialog, String encodedAccountName, String deviceId, String hostUrl) {
mContext = myContext;
this.progDia = progDialog;
this.encodedAccName = encodedAccountName;
this.deviceId = deviceId;
this.hostUrl = hostUrl;
}
@Override
protected String doInBackground(String... params) {
String Url = params[0];
if(!Url.endsWith("?"))
Url += "?";
List<NameValuePair> nameValuePair = new LinkedList<NameValuePair>();
nameValuePair.add(new BasicNameValuePair("encodedAccountName", encodedAccName));
nameValuePair.add(new BasicNameValuePair("deviceId", deviceId));
nameValuePair.add(new BasicNameValuePair("hostUrl", hostUrl));
String paramString = URLEncodedUtils.format(nameValuePair, "utf-8");
Url += paramString;
HttpResponse response =null;
String resultString = "";
// Creating HTTP client
HttpClient httpClient = new DefaultHttpClient();
// Creating HTTP Post
HttpGet request = new HttpGet(Url);
try {
response = httpClient.execute(request);
if(response.getStatusLine().getStatusCode()== 200) {
HttpEntity entity = response.getEntity();
if (entity != null) {
InputStream inputStream = entity.getContent();
responseBody = convertToString(inputStream);
return responseBody;
}
}
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
return responseBody;
}
}