Hallo zusammen,
Ich bin Max und neu hier.
Ich habe ein Projekt, in dem ich einen https Server auf meinem lokalen PC laufen habe.
Das Problem ist dabei ist, dass ich mit meiner App über Https request bestimmte Daten rausholen möchte.
Mein Problem ist, dass ich keine Verbindung zum Server aufbauen kann.
Ich vermute dass es daran liegt, dass es kein gültiges Zertifikat für den Https Server gibt.
Ich kann aber auch keins einspielen.
Der Ablauf soll wie folgt sein:
Wenn ich auf einen Login Button drücke soll im Hintergrund ein Https request abgeschickt werden und mir
ein JSON Objekt mit einen Sicherheitstoken zurück geben. Danach soll der Sicherheitstoken ausgelesen werden.
Es soll also nicht übermittelt werden sondern lediglich eine Verbindung aufgebaut werden und mir ein
JSON Objekt zurückgeben.
Meine Mainclass:
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void verbindungServer(View view )
{
Button login = (Button) findViewById(R.id.login);
login.setOnClickListener(new View.OnClickListener() {
@SuppressWarnings("unused")
public void onClick(View v) {
// ServiceURL
String ServiceURL = "https://192.168.2.107";
// AppID
int AppID = 1;
new JSONTaskRegistrieren().execute(ServiceURL + "/WWSVC/WWSERVICE/REGISTER/HHash/HAHash/"+AppID);
setContentView(R.layout.mainmenu);
}});
}
}
Alles anzeigen
Mein Connectioncode ist wie folgt aufgebaut:
public class JSONTaskRegistrieren extends AsyncTask<String, String, String>{
private static final HostnameVerifier HostnameVerifier = new NullHostnameVerifier();
private SSLSocketFactory socketfactory;
@Override
protected String doInBackground(String...params){
String Servicepass;
String SecretToken = null;
String result = null;
BufferedReader reader = null;
URL url;
try{
url = new URL(params[0]);
SSLContext ctxt = SSLContext.getDefault();
SSLSocketFactory ssf = ctxt.getSocketFactory();
SSLSocket socket = (SSLSocket) ssf.createSocket(params[0], 443);
socket.startHandshake();
socket.close();
this.socketfactory = HttpsURLConnection.getDefaultSSLSocketFactory();
HttpsURLConnection.setDefaultHostnameVerifier((HostnameVerifier) new NullHostnameVerifier());
HttpsURLConnection con = (HttpsURLConnection)url.openConnection();
con.setDoInput(true);
con.setRequestMethod("GET");
con.setRequestProperty("Accept", "application/json");
con.setRequestProperty("WWSVC-REQID", "1");
InputStream stream = con.getInputStream();
reader = new BufferedReader(new InputStreamReader(stream));
StringBuffer buffer = new StringBuffer();
String output;
Log.v("JSONTaskRegistrieren", result);
while ((output = reader.readLine()) != null){
buffer.append(output);
}
String finalJson = buffer.toString();
Log.v("JSONTaskRegistrieren", result);
//System.out.println(buffer.toString());
JSONObject parentObject = new JSONObject(finalJson);
JSONObject servicepassobjekt = parentObject.getJSONObject("SERVICEPASS");
Log.v("JSONTaskRegistrieren", result);
//System.out.println(servicepassobjekt.toString());
StringBuffer finalBufferedData = new StringBuffer();
JSONObject finalObject = servicepassobjekt;
Servicepass = finalObject.getString("PASSID");
SecretToken = finalObject.getString("APPID");
return finalBufferedData.toString();
} catch (MalformedURLException e) {
Log.e("JSONTaskRegistrieren", "Error", e);
e.printStackTrace();
} catch (IOException e) {
Log.e("JSONTaskRegistrieren", "Error", e);
e.printStackTrace();
} catch (JSONException e) {
Log.e("JSONTaskRegistrieren", "Error", e);
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
Alles anzeigen
Als IOException zeigt er mir diese Meldung an:
11-23 19:25:54.275 28323-29066/com.example.maxpe_000.webware E/JSONTaskRegistrieren: Error
11-23 19:26:12.102 28323-29066/com.example.maxpe_000.webware W/System.err: java.net.UnknownHostException: Unable to resolve host "https://192.168.2.107/WWSVC/WWSERVICE/REGISTER/HHash/HAHash/1": No address associated with hostname
11-23 19:26:12.108 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:475)
11-23 19:26:12.108 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.InetAddress.getAllByNameImpl(InetAddress.java:252)
11-23 19:26:12.108 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.InetAddress.getAllByName(InetAddress.java:215)
11-23 19:26:12.108 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.Socket.tryAllAddresses(Socket.java:111)
11-23 19:26:12.109 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.Socket.<init>(Socket.java:180)
11-23 19:26:12.109 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.Socket.<init>(Socket.java:152)
11-23 19:26:12.109 28323-29066/com.example.maxpe_000.webware W/System.err: at javax.net.ssl.SSLSocket.<init>(SSLSocket.java:772)
11-23 19:26:12.109 28323-29066/com.example.maxpe_000.webware W/System.err: at com.android.org.conscrypt.OpenSSLSocketImpl.<init>(OpenSSLSocketImpl.java:187)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at com.android.org.conscrypt.OpenSSLSocketFactoryImpl.createSocket(OpenSSLSocketFactoryImpl.java:68)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at com.example.maxpe_000.webware.JSONTaskRegistrieren.doInBackground(JSONTaskRegistrieren.java:47)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at com.example.maxpe_000.webware.JSONTaskRegistrieren.doInBackground(JSONTaskRegistrieren.java:26)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at android.os.AsyncTask$2.call(AsyncTask.java:295)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at java.util.concurrent.FutureTask.run(FutureTask.java:237)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
11-23 19:26:12.111 28323-29066/com.example.maxpe_000.webware W/System.err: at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
11-23 19:26:12.112 28323-29066/com.example.maxpe_000.webware W/System.err: at java.lang.Thread.run(Thread.java:818)
11-23 19:26:12.112 28323-29066/com.example.maxpe_000.webware W/System.err: Caused by: android.system.GaiException: android_getaddrinfo failed: EAI_NODATA (No address associated with hostname)
11-23 19:26:12.112 28323-29066/com.example.maxpe_000.webware W/System.err: at libcore.io.Posix.android_getaddrinfo(Native Method)
11-23 19:26:12.112 28323-29066/com.example.maxpe_000.webware W/System.err: at libcore.io.ForwardingOs.android_getaddrinfo(ForwardingOs.java:55)
11-23 19:26:12.112 28323-29066/com.example.maxpe_000.webware W/System.err: at java.net.InetAddress.lookupHostByName(InetAddress.java:456)
11-23 19:26:12.112 28323-29066/com.example.maxpe_000.webware W/System.err: ... 16 more
Vielen dank schon einmal für eure Hilfe und Ideen.