Я пытаюсь создать Android-приложение и веб-страницу уже несколько месяцев, когда приложение отправляет простую строку на веб-сайт, и веб-сайт отображает этот текст. Я пробовал много учебников, но они все неполные или старые.
РЕШЕНИЕ
Поскольку я всего лишь n00b, поскольку речь идет о кодировании, я не мог сказать, были ли предложения целыми историями или просто частью истории. Оказалось, что я только что получил часть истории.
Моя цель состояла в том, чтобы создать приложение для Android и веб-страницу, где приложение отправляет простую строку на веб-сайт, и веб-сайт отображает этот текст для всех . Эта последняя часть, о которой я не упоминал в моем вопросе. Так что запрос полного помогает получить правильный ответ.
Мне пришлось предпринять несколько шагов:
<!DOCTYPE
и т. Д. Я создал новый субдомен без управления содержимым и загрузил php-файл с php-кодом Hash. Он отлично работал) Глянь сюда:
<?php $msg = $_POST['msg']; if($_SERVER['REQUEST_METHOD']=='POST'){ $myfile = fopen("yourfilename.txt", "a") or die("Unable to open file!"); fwrite($myfile, $msg . "\n"); fclose($myfile); } $myfile = fopen("yourfilename.txt", "r") or die("Unable to open file!"); echo fread($myfile,filesize("yourfilename.txt")); fclose($myfile); ?>
Хорошо, позвольте мне дать вам очень простой способ подключить ваше приложение к странице службы PHP … Сначала вы должны убедиться, что у вас уже есть эти библиотеки: 1- http-core-4.1.jar 2- httpclient-4.0.3. яс
Затем создайте новое имя класса «JSONParser» и вставьте этот код:
import android.util.Log; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; // constructor public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if(method == "POST"){ // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); }else if(method == "GET"){ // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } }
Итак, переходите к своей основной деятельности и делайте это так:
public class MainActivity extends AppCompatActivity { JSONParser jparser = new JSONParser(); ProgressDialog pdialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); String msg = "Hello"; new connector().execute(msg); //This will create a new thread to connect with your service page. } //The AsyncClass connector.. class connector extends AsyncTask<String,String,String> { @Override protected void onPreExecute(){ pdialog = new ProgressDialog(MainActivity.this); pdialog.setMessage("Sending Hi..."); pdialog.setCancelable(false); pdialog.setIndeterminate(false); pdialog.show(); } //ArrayList to carry your values List<NameValuePair> data = new ArrayList<>(); @Override protected String doInBackground(String... params) { try { data.add(new BasicNameValuePair("msg",params[0])); //here we sit the key "msg" to carry your value which you passed on thread execute. //Then create the JSONObject to make the rquest and pass the data(ArrayList). JSONObject json = jparser.makeHttpRequest("Http://example.com/mypage.php","POST",data); /*In case you want to receive a value from your page you should do something like this.. String getString = json.getString("key1"); Int getInt = json.getInt("key2"); key1,key2 are keys that you send from your page. */ } catch (Exception e) { /* Any Exception here */ } return null; } @Override protected void onPostExecute(String file_url){ pdialog.dismiss(); // This After the thread did it's operate /* For Example you Toast your key1,key2 values :D*/ } } }
На странице PHP вы должны сделать следующее.
<?php //In case of receive.. $msg = $_POST['msg']; echo $msg; //In case of send.. $values = array(); $values["key1"] = "Hello this is key1"; $values["key2"] = "Hello this is key2"; echo json_encode($values); //this will make a json encode which you can get it back in your application ;) ?>
Надеюсь, это поможет :), и извините за мой плохой английский: v