Hier habe ich Code geschrieben, um HttpPost
Anfrage in Android zu implementieren, die nach der onClick
Methode laufen sollte.javax.net.ssl.SSLException mit HttpPost Anfrage in Android
Nun, ich habe die Lösung nicht bekommen, das ist das 3. Programm, das ich ausprobiert habe und nun die Frage aktualisiere.
Aber ich weiß nicht jedes Mal, dass ich das gleiche error
bekomme. Bitte sehen Sie sich diese Situation an.
Ich glaube, die Codes sind fast korrekt mit jeder kleinen erforderlichen Korrektur, müssen anders denken, was ich hier tue.
Da es funktioniert als einfaches Java-Programm in eclipse
aber android studio
löst exception
. Diese
ist onClick
Methode:
public void onClick(View v) {
inputSub = subIn.getText().toString();
String url = "https://some_url";
String inputJson = null;
try {
inputJson = "{ \"asset\": {\"id\": ..........}";
}catch (JSONException e){
e.printStackTrace();
}
new CreateIncident(url, inputJson).execute();
}
Dies ist AsyncTask class
:
private class CreateIncident extends AsyncTask<Void, Void, Void> {
private final String TAG = "HttpClient";
final String user ="some_user";
final String password ="some_pwd";
String serUrl;
String inputJson ="";
public CreateIncident(String serUrl, String inputJson) {
this.serUrl = serUrl;
this.inputJson = inputJson;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
// Showing progress dialog
pDialog = new ProgressDialog(CreateIncidentActivity.this);
pDialog.setMessage("Please wait...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
try {
String authString = user + ":" + password;
byte[] authBytes = authString.getBytes();
String authStringEnc = Base64.encodeToString(authBytes, Base64.DEFAULT);
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost postRequest = new HttpPost(serUrl);
postRequest.setHeader("Authorization", "Basic " + authStringEnc);
postRequest.setHeader("Accept", "application/json");
postRequest.setHeader("Content-type", "application/json");
StringEntity input = new StringEntity(inputJson);
input.setContentType("application/json");
postRequest.setEntity(input);
HttpResponse response = httpClient.execute(postRequest);
StringBuilder sb = new StringBuilder();
try {
BufferedReader reader =
new BufferedReader(new InputStreamReader(response.getEntity().getContent()), 65728);
String line = null;
while ((line = reader.readLine()) != null) {
sb.append(line);
}
}
catch (IOException e) { e.printStackTrace(); }
catch (Exception e) { e.printStackTrace(); }
System.out.println("finalResult " + sb.toString());
System.out.println(response.getStatusLine().getReasonPhrase());
if (response.getStatusLine().getStatusCode() != 201) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
httpClient.getConnectionManager().shutdown();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
@Override
protected void onPostExecute(Void result) {
super.onPostExecute(result);
// Dismiss the progress dialog
if (pDialog.isShowing())
pDialog.dismiss();
}
}
Hier in stackTrace
von Android Monitor
zeigt Ich bin keine Ausnahme bekommen, aber nach dem Debuggen ich es wirft die Ausnahme gefunden
javax.net.ssl.SSLException: Read error: ssl=0xd6483780: I/O error during system call, Connection reset by peer
Und der Fehlercode unterscheidet sich manchmal für das gleiche Programm.
Ich bin nicht in der Lage zu finden, welchen Fehler ich hier mache.
Bitte jemand mir helfen.
Thaks viel. Durch Hinzufügen dieser Zeile wird das Programm ausgeführt. aber jetzt in dieser Zeile 'HttpResponse response = (HttpResponse) httpclient.execute (httpPostRequest);' Die 'Antwort' ist _null_. und der _error_ ist 'javax.net.ssl.sslexception connection reset by peer android' – Shambhu