У меня возникает проблема, связанная с внутренним контентом с моим приложением. Я пытаюсь создать запрос JSON, который передает имя пользователя и пароль на сервер. Сервер принимает эти значения и должен возвращать Пользователь, который я сопоставляю с пользовательским объектом.Проблема структурирования запроса JSON
В настоящий момент сервер настроен так, что он возвращает тот же самый JSON, который настроен для приема.
Я использую Jackson для выполнения всех сопоставлений JSON, есть ли способ изменить JSON, с которым я перехожу, чтобы соответствовать JSON ниже?
ВОТ JSON Посылаю
[
{
"name":"username",
"value":"hi"
},
{
"name":"password",
"value":"hi"
}
]
вот что JSON должен выглядеть, когда оно получено серверными
{
"password":"hi",
"username":"hi"
}
ВОТ МОЯ USER ОТДЫХ
public static class AuthUser extends
AsyncTask<ArrayList<NameValuePair>, Void, User> {
public interface AuthUserDelegate {
public void getAuthenticatedUser(User user) throws JSONException;
}
AuthUserDelegate delegate;
Context mContext;
public AuthUser(Context context) {
mContext = context;
this.delegate = (AuthUserDelegate) context;
}
@Override
protected User doInBackground(ArrayList<NameValuePair>... params) {
ObjectMapper mapper = new ObjectMapper(); // create once, reuse
User user = null;
String url = ROUTE_USER_AUTH;
HttpPost httppost = new HttpPost(url);
HttpClient httpclient = new DefaultHttpClient();
String UserJSONResponse = null;
try {
String jsonString = mapper.writeValueAsString(params[0]);
StringEntity m_stringEntity = new StringEntity(jsonString);
// UrlEncodedFormEntity m_entity = new UrlEncodedFormEntity(
// params[0]);
httppost.setEntity(m_stringEntity);
httppost.addHeader("Content-type", "application/json");
HttpResponse postResponse = httpclient.execute(httppost);
UserJSONResponse = EntityUtils.toString(postResponse
.getEntity());
user = mapper.readValue(UserJSONResponse, User.class);
Log.e("E AUTH USER", "Status code: "
+ postResponse.getStatusLine().getStatusCode());
Log.e("E AUTH USER", "Auth was sent, Server returned: \n"
+ UserJSONResponse);
} catch (JsonProcessingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
httppost.abort();
Log.e("E IO EXCEPTION", "Error for URL: " + url, e);
// TODO Auto-generated catch block
e.printStackTrace();
}
return user;
}
@Override
protected void onPostExecute(User result) {
// TODO Auto-generated method stub
super.onPostExecute(result);
// User user = new User();
// Log.e("AUTH POST USERNAME", result.getUser_name());
try {
delegate.getAuthenticatedUser(result);
} catch (JSONException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
ОСНОВНАЯ ДЕЯТЕЛЬНОСТЬ СОБИРАТЬ ИНФОРМАЦИЮ И ВЫПОЛНИТЬ AsyncTask
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
switch (v.getId()) {
case R.id.btnSignIn:
username = etUsername.getText().toString().trim();
password = etPassword.getText().toString().trim();
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
nameValuePairs.add(new BasicNameValuePair("username", username));
nameValuePairs.add(new BasicNameValuePair("password", password));
new UserREST.AuthUser(this).execute(nameValuePairs);
break;
default:
break;
}
}
спасибо. Это решило мою проблему. –