#android #android-asynctask #http-get
#Android #android-asynctask #http-get
Вопрос:
Я отправляю данные формы с использованием метода HTTP GET данные обратной связи после успешной отправки возвращаются со следующим содержимым:
<?xml version="1.0" encoding="utf-8"?>
<result><![CDATA[Submit successfully]]></result>
Ниже приведен URL-адрес :
«feedbackurl»:
Приведенный выше URL-адрес предоставляет содержимое в формате xml, предоставленное в начале вопроса.
Код, который я использую для подключения к http,:
String formSubmitURL = homeURL "feedbacksubmit/create?nid=9123amp;showid=" feedbackShowId "amp;cid=" URLEncoder.encode(cId, "UTF-8") "amp;fullname=" URLEncoder.encode(userName, "UTF-8") "amp;contactno=" URLEncoder.encode(phNO, "UTF-8") "amp;usermsg=" URLEncoder.encode(userMsg, "UTF-8") "amp;email=" URLEncoder.encode(userEmail, "UTF-8") "amp;" System.currentTimeMillis();
connection = new HttpConnection(DataHanlder);
connection.create(HttpConnection.GET,formSubmitURL , null);
Отправка формы выполняется в асинхронной задаче. Проблема в том, что если я жестко закодирую URL-адрес «feedbackurl», я получаю ответ (формат xml) в обработчике данных.
Но если я передам его так, как я передаю в «formSubmitURL», в DataHandler ничего не извлекается. Но тот же URL-адрес, который отображается в браузере, выдает мне вывод xml в ответ.
Кто-нибудь может помочь мне найти основную причину проблемы или решение этой проблемы. Я знаю, что вопрос, опубликованный здесь, сбивает с толку, но я не могу объяснить это лучше, чем это.
Ниже приведен мой код обработчика данных:
private Handler DataHanlder = new Handler()
{
@SuppressWarnings("unused")
@Override
public void handleMessage(Message msg)
{
switch (msg.what)
{
case HttpConnection.DID_START:
break;
case HttpConnection.DID_SUCCEED:
if(msg.obj!=null)
{
Log.i("FEEDBACK DATA FROM SERVER","" msg.obj.toString());
resultFromServer = msg.obj.toString();
if(resultFromServer.contains("successfully"))
{
if (pd.isShowing())
{
pd.dismiss();
}
showAlertDialog(getActivity(), "Thank You!", "We appreciate your valuable feedback.", false);
//Toast.makeText(BaseActivity.baseActivityContext, "Thank You!n We appreciate your valuable feedback.", Toast.LENGTH_LONG).show();
}
else
{
if (pd.isShowing())
{
pd.dismiss();
}
showAlertDialog(getActivity(), "FeedBack Data Submit", "Your Feedback data is not submitted.", false);
//Toast.makeText(BaseActivity.baseActivityContext, "Your Feedback data is not submitted.", Toast.LENGTH_LONG).show();
}
}
break;
case HttpConnection.DID_ERROR:
if(pd!=null)
{
if (pd.isShowing())
{
pd.dismiss();
}
}
break;
default:
break;
}
super.handleMessage(msg);
}
};
Комментарии:
1. Если вы отправляете данные формы, лучше использовать HTTP POST вместо HTTP GET. Какова ценность
homeURL
? Используете ли вы какие-либо сеансы? Если да, то как вы обрабатываете / передаете переменную сеанса? Также обратите внимание, что в xmlamp;
кодируетсяamp;amp;
, это может вызвать некоторые проблемы с URL. Что вы подразумеваете под «ничего не извлекается»? Вы получаете и код ошибки? Отличается ли вывод от желаемого?2. В другом месте проекта, где я использую тот же фрагмент кода для извлечения xml с сервера, я получаю содержимое xml. Тот же фрагмент кода не работает. Когда я открываю тот же URL-адрес в браузере, что и URL-адрес, который я зарегистрировал после кодирования, я получаю xml в браузере, но код не извлекает данные. Выполняя post, я не получаю ожидаемого ответа от сервера.