Прежде всего, я должен сказать, что я совершенно новый в HTTP. Я собираюсь отправить запрос на отправку на веб-сайт ресторана моих родителей, чтобы зарегистрировать нового пользователя из моего приложения.Http Post возвращает 200, но не работает
Сайт это (на испанском языке): http://pedidos.pizzeriabritannia.com/index.asp?Opc=Registro
Насколько я знаю запрос пост имеет следующие valuePairs:
<form name="formulario" method="post" action="index.asp?Opc=Registro&Sub=Nuevo" >
<input type="text" size="20" name="nombre" value="" style="background-color:#f5f7fe" />
<input type="text" size="30" name="apellidos" value="" style="background-color:#f5f7fe" />
<input type="text" size="30" name="direccion" value="" style="background-color:#f5f7fe" />
<input type="text" size="20" name="nif" id="nif" style="background-color:#f5f7fe" value="" />
<input type="text" size="30" name="email" id="email" value="" style="background-color:#f5f7fe"/>
<input type="text" size="20" name="telefono" value="" style="background-color:#f5f7fe" />
<input type="text" size="10" name="clave" value="" style="background-color:#f5f7fe" />
<input type="checkbox" value="S" name="correo" checked="checked" />
И в моем Android кода я делаю:
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://pedidos.pizzeriabritannia.com/index.asp?Opc=Registrado");
StringBuilder data = null;
String answer ="";
try {
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("nombre", Nombre));
nameValuePairs.add(new BasicNameValuePair("apellidos", Apellidos));
nameValuePairs.add(new BasicNameValuePair("calle", Calle));
nameValuePairs.add(new BasicNameValuePair("direccion", Detalles));
nameValuePairs.add(new BasicNameValuePair("email", Email));
nameValuePairs.add(new BasicNameValuePair("clave", contrasena));
nameValuePairs.add(new BasicNameValuePair("telefono", telefono));
nameValuePairs.add(new BasicNameValuePair("nif", ""));
nameValuePairs.add(new BasicNameValuePair("correo", "s"));
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
// Execute HTTP Post Request
HttpResponse response = httpclient.execute(httppost);
data = inputStreamToString(response.getEntity().getContent());
int code = response.getStatusLine().getStatusCode();
answer = code + data.toString();
} catch (ClientProtocolException e) {
// TODO Auto-generated catch block
} catch (IOException e) {
// TODO Auto-generated catch block
}
return answer;
}
Я получаю 200 в качестве ответа, что означает, что все прошло нормально, но проблема в том, что электронное письмо должно быть отправлено на адрес электронной почты, указанный в форме, и это не happe нин. У вас есть идеи? Любое предложение, которому я мог бы следовать?
Editted:
private StringBuilder inputStreamToString(InputStream is) {
String line = "";
StringBuilder total = new StringBuilder();
// Wrap a BufferedReader around the InputStream
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
// Read response until the end
try {
while ((line = rd.readLine()) != null) {
total.append(line);
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// Return full string
return total;
}
Вам не нужна эта '& Sub = Nuevo' часть в вашем URL-адресе? – njzk2
Вы так думаете? Я попытаюсь ... – Aldridge1991
также, по-видимому, на этом конкретном посту, 200 может не означать, что все в порядке, поскольку, похоже, есть некоторые проверки на стороне сервера. Возвращается 200, но прикрепленная веб-страница объясняет ошибку. Я предлагаю вам попробовать посмотреть, что там есть в сообщении об ошибке. (например, вы можете отобразить его в веб-просмотре.) – njzk2