У меня проблема с некоторыми устаревшими методами, в частности с этим, который я разместил здесь.Устаревшие методы, как я могу заменить его новым
Что, что я хочу просто: отправить данные на сервер, используя HTTP POST ---> сделать запрос с данными, которые я получаю от клиента -> отправить ответ
Я пытаюсь разработать приложение Android, использующее API 6.0, но все мои методы устарели, что я должен изменить, чтобы преобразовать мой код в новый?
public class ReadServer extends Activity {
String result;
public String readserver(String id_data, String data){
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("myurl/queryMobile.php");
StringBuilder builder = new StringBuilder();
String json = "";
//Build jsonObject
JSONObject jsonObject = new JSONObject();
jsonObject.accumulate(id_data, data);
//Convert JSONObject to JSON to String
json = jsonObject.toString();
//Set json to StringEntity
StringEntity se = new StringEntity(json);
//Set httpPost Entity
httpPost.setEntity(se);
//Set some headers to inform server about the type of the content
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
//Execute POST request to the given URL
HttpResponse httpResponse = httpclient.execute(httpPost);
//Receive response as inputStream
StatusLine statusLine = httpResponse.getStatusLine();
int statusCode = statusLine.getStatusCode();
//Convert input stream to string
AlertDialog.Builder alertDialog;
switch(statusCode){
case 200:
HttpEntity entity = httpResponse.getEntity();
InputStream content = entity.getContent();
BufferedReader reader = new BufferedReader(new InputStreamReader(content));
String line="";
try{
while ((line = reader.readLine()) != null) {
builder.append(line);
result = builder.toString();
}
}catch(Exception e){
alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("400 Bad Request");
alertDialog.setMessage("Non è stato possibile soddisfare la tua richiesta, riprova più tardi.");
alertDialog.show();
}
break;
case 500:
alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("500 Internal Server Error");
alertDialog.setMessage("Non è stato possibile soddisfare la tua richiesta, riprova più tardi.");
alertDialog.show();
break;
case 503:
alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("503 Service Unavailable");
alertDialog.setMessage("Il server di ....non è al momento disponibile, riprova più tardi.");
alertDialog.show();
break;
case 504:
alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("504 Gateway Timeout");
alertDialog.setMessage("Il server di ....è momentaneamente sovraccarico, riprova più tardi.");
alertDialog.show();
break;
default:
alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("Si è verificato un errore");
alertDialog.setMessage("Errore 001" +"\n"+"Non è stato possibile soddisfare la tua richiesta, riprova più tardi.");
alertDialog.show();
break;
}
}catch(Exception e){
AlertDialog.Builder alertDialog = new AlertDialog.Builder(this);
alertDialog.setTitle("Si è verificato un errore");
alertDialog.setMessage("Errore 001" + "\n" + "Non è stato possibile soddisfare la tua richesta, riprova più tardi.");
alertDialog.show();
}
return result;
}
}
Я попытался изменить какой-то метод, но я не знаю, как преобразовать некоторые процедуры, например:
setEntity, HttpResponse, ... строки статуса
Я абсолютно необходимо изменить устаревший метод с новым, я не могу изменить весь код.
EDIT 1: Например, в моем MainActivity:
ReadServer read = new ReadServer();
String result = read.readserver("list_news","homepage");
Мой класс ReadServer получить во входных двух Params:
public String readserver(String id_data, String data){
...
jsonObject.accumulate(id_data, data); // in a jsonObject i put two params
...
}
Я делаю HTTP Post, мои данные Отправлю сервер (моя страница php)
$raw = file_get_contents('php://input');
$value = json_decode($raw, true);
$list_news = $value['list_news'];
На данный момент я получаю свои данные, и я могу m аке мой запрос:
if (isset($list_news)) {
switch($list_news){
case "homepage":
$q = "SELECT
FROM
WHERE ";
@BKN: В вашем решении я мог видеть, что вы используете хэш-карту для отправки ваших данных на ваш «сервер», в моем проекте мне нужно отправить только две строковые «данные идентификатора» и «данные», например: id_data = "weather" и data = "rainy". Как я могу избежать использования hashmap? спасибо –
Можете ли вы рассказать мне, почему вам не нравится использовать hashmap? – BNK
Конечно, у меня есть файл .php на моем сервере, который я не могу изменить, когда я делаю HTTP-запрос с моего устройства Android, мне нужно отправить с POST ровно две строки, вы можете увидеть небольшую часть моего php код в моем редактировании. –