Hallo. Ich bin Wataku, ein serverseitiger Programmierer, der an einer bestimmten Schule Programmieren studiert. : entspannt: Lassen Sie uns auch dieses Mal Android entwickeln. Dieses Mal möchte ich mich mit Android mit einem externen Netzwerk verbinden und Daten senden. Es ist fast das gleiche wie beim letzten GET.
String postData =“Parameter 1 anfordern= ” +Wert 1+ “ &Parameter 2 anfordern= ” +Wert 2
con.setRequestMethod(“POST”)
con.setDoOutput(true)
OutputStream os = con.getOutputStream()
os.write(postData.getByte())
//String(String)Daten können nur gesendet werden, wenn sie in Bytes konvertiert wurden
** (Hinweis) ** * Con.connect () ist für POST nicht erforderlich. * * Progress Wenn Sie ** PublishProgress () ** in "doInBackground ()" von AsyucTask aufrufen, wird "onProgressUpdate ()" im UI-Thread ausgeführt.
private class PostAccess extends AsyucTask< String, String, String > {
...
public String doInBackground(String ... parent) {
...
publishProgress(String);
}
public void onProgressUpdate(String ... values) {
super.onProgressUpdate(values);//Schreiben Sie als Versprechen
}
}
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("Statuscode: " + 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, "Auszeit", ex);
}
catch(MalformedURLException ex) {
publishProgress(getString(R.string.msg_err_send));
Log.e(DEBUG_TAG, "Fehler bei der URL-Konvertierung", ex);
}
catch(IOException ex) {
publishProgress(getString(R.string.msg_err_send));
Log.e(DEBUG_TAG, "Kommunikationsfehler", 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, "InputStream-Analyse fehlgeschlagen", 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, "JSON-Analyse fehlgeschlagen", 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();
}
}
}
das ist alles. Wenn Sie Vorschläge wie etwas falsches haben, kontaktieren Sie uns bitte. Vielen Dank für das Lesen bis zum Ende.
Recommended Posts