Bonjour. Je suis Wataku, un programmeur côté serveur qui étudie la programmation dans une certaine école. : détendu: Développons également Android cette fois. Cette fois, je voudrais me connecter à un réseau externe avec Android et envoyer des données. C'est presque le même que le dernier GET.
String postData ="Demander le paramètre 1= ” +Valeur 1+ “ &Requête paramètre 2= ” +Valeur 2
con.setRequestMethod(“POST”)
con.setDoOutput(true)
OutputStream os = con.getOutputStream()
os.write(postData.getByte())
//Chaîne(String)Les données ne peuvent être envoyées que si elles sont converties en octets
** (Remarque) ** * Con.connect () n'est pas requis pour POST. * Progress Lorsque vous appelez ** publishProgress () ** dans "doInBackground ()" d'AsyucTask, "onProgressUpdate ()" est exécuté dans le thread d'interface utilisateur.
private class PostAccess extends AsyucTask< String, String, String > {
...
public String doInBackground(String ... parent) {
...
publishProgress(Chaîne);
}
public void onProgressUpdate(String ... values) {
super.onProgressUpdate(values);//Écrivez comme une promesse
}
}
public class PostActivity extends AppCompatActivity {
private static final String ACCESS_URL = "http://xxx.xxx.xx/xx/~~~.php";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_post);
}
public void sendButtonClick(View view) {
EditText etName = findViewById(R.id.etName);
EditText etComment = findViewById(R.id.etComment);
TextView tvProcess = findViewById(R.id.tvProcess);
TextView tvResult = findViewById(R.id.tvResult);
tvProcess.setText("");
tvResult.setText("");
String name = etName.getText().toString();
String comment = etComment.getText().toString();
PostAccess access = new PostAccess(tvProcess, tvResult);
access.execute(ACCESS_URL, name, comment);
}
private class PostAccess extends AsyncTask<String, String, String> {
private static final String DEBUG_TAG = "PostAccess";
private TextView _tvProcess;
private TextView _tvResult;
private boolean _success = false;
public PostAccess(TextView tvProcess, TextView tvResult) {
_tvProcess = tvProcess;
_tvResult = tvResult;
}
@Override
public String doInBackground(String... params) {
String urlStr = params[0];
String name = params[1];
String comment = params[2];
String postData = "name= " + name + "&comment=" + comment;
HttpURLConnection con = null;
InputStream is = null;
String result = "";
try {
publishProgress(getString(R.string.msg_send_before));
URL url = new URL(urlStr);
con = (HttpURLConnection) url.openConnection();
con.setRequestMethod("POST");
con.setConnectTimeout(5000);
con.setReadTimeout(5000);
con.setDoOutput(true);
OutputStream os = con.getOutputStream();
os.write(postData.getBytes());
os.flush();
os.close();
int status = con.getResponseCode();
if (status != 200) {
throw new IOException("Code d'état: " + status);
}
publishProgress(getString(R.string.msg_send_after));
is = con.getInputStream();
result = is2String(is);
_success = true;
}
catch(SocketTimeoutException ex) {
publishProgress(getString(R.string.msg_err_timeout));
Log.e(DEBUG_TAG, "temps libre", ex);
}
catch(MalformedURLException ex) {
publishProgress(getString(R.string.msg_err_send));
Log.e(DEBUG_TAG, "Échec de la conversion d'URL", ex);
}
catch(IOException ex) {
publishProgress(getString(R.string.msg_err_send));
Log.e(DEBUG_TAG, "Échec de la communication", ex);
}
finally {
if (con != null) {
con.disconnect();
}
try {
if (is != null) {
is.close();
}
}
catch (IOException ex) {
publishProgress(getString(R.string.msg_err_parse));
Log.e(DEBUG_TAG, "L'analyse InputStream a échoué", ex);
}
}
return result;
}
@Override
public void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
String message = _tvProcess.getText().toString();
if (!message.equals("")) {
message += "\n";
}
message += values[0];
_tvProcess.setText(message);
}
@Override
public void onPostExecute(String result) {
if (_success) {
String name = "";
String comment = "";
onProgressUpdate(getString(R.string.msg_parse_before));
try {
JSONObject rootJson = new JSONObject(result);
name = rootJson.getString("name");
comment = rootJson.getString("comment");
}
catch (JSONException ex) {
onProgressUpdate(getString(R.string.msg_err_parse));
Log.e(DEBUG_TAG, "L'analyse JSON a échoué", ex);
}
onProgressUpdate(getString(R.string.msg_parse_after));
String message = getString(R.string.dlg_msg_name) + name + "\n" + getString(R.string.dlg_msg_comment) + comment;
_tvResult.setText(message);
}
}
private String is2String(InputStream is) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(is, "UTF-8"));
StringBuffer sb = new StringBuffer();
char[] b = new char[1024];
int line;
while(0 <= (line = reader.read(b))) {
sb.append(b, 0, line);
}
return sb.toString();
}
}
}
c'est tout. Si vous avez des suggestions telles que quelque chose qui ne va pas, veuillez nous contacter. Merci d'avoir lu jusqu'au bout.
Recommended Posts