我是Android编程新手,因为我已经获得了一个辅助项目。
我有这个网页https://travelads.katakwe.co.za/androidlogin
它有一个用户名和密码字段,我想用它来登录我的Android应用程序
所以我有两个问题:
1)可以完成
2)我该怎么做
我发现了以下问题:
我遇到的所有这些问题是他们没有解释他们实施的所有方法,我不知道如何将其应用到我自己的网页
URL url =new URL("https://travelads.katakwe.co.za/androidlogin");
HttpsURLConnection connection= (HttpsURLConnection) url.openConnection();
String urlParameters="sn=C02G8416DRJM&cn=&locale=&caller=&num=12345";
connection.setRequestMethod("POST");
connection.setRequestProperty("Username","name");
connection.setRequestProperty("Password","pass");
connection.setDoOutput(true);
DataOutputStream dStream =new DataOutputStream(connection.getOutputStream());
dStream.writeBytes(urlParameters);
dStream.flush();
dStream.close();
int responseCode=connection.getResponseCode();
ret=responseCode;
答案 0 :(得分:1)
我已经为HTTPS服务器的所有POST / PUT / GET请求编写了一个函数
一个。您必须处理自签名证书。请确保包含该内容。
湾您必须告诉要将哪种类型的内容类型发送到服务器。
℃。取决于服务器配置。在处理Android请求之前,有什么要求您通过POSTMAN或curl命令向服务器发送检查以验证是否正常工作。
public String createConnection (String urlS, String methodInvoked,String patchBody, String postBody,String putBody){
URL url ;
BufferedReader br = null;
String toBeReturned="";
try {
url = new URL(urlS);
HostnameVerifier hostnameVerifier = new HostnameVerifier() {
@Override
public boolean verify(String hostname, SSLSession session) {
return true;
}
};
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
X509Certificate[] myTrustedAnchors = new X509Certificate[0];
return myTrustedAnchors;
}
@Override
public void checkClientTrusted(X509Certificate[] certs, String authType) {
}
@Override
public void checkServerTrusted(X509Certificate[] certs, String authType) {
}
}
};
// Create an SSLContext that uses our TrustManager
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, null);
HttpsURLConnection connection = (HttpsURLConnection) url.openConnection();
connection.setConnectTimeout(60000);
HttpsURLConnection.setDefaultHostnameVerifier(hostnameVerifier);
connection.setSSLSocketFactory(sc.getSocketFactory());
connection.setHostnameVerifier(hostnameVerifier);
if (patchBody != null ){
Log.i(TAG, " createConnection with PATH with body" );
connection.setRequestMethod("PATCH");
connection.setRequestProperty("data",patchBody);
connection.addRequestProperty("Content-Type", "application/json");
DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
dStream.writeBytes(patchBody);
dStream.flush();
dStream.close();
}
if (methodInvoked.equalsIgnoreCase("PATCH") && patchBody == null ){
Log.i(TAG, " createConnection with PATH without body" );
connection.setRequestMethod("PATCH");
// connection.addRequestProperty("Content-Type", "application/json");
// connection.setDoOutput(true);
}
if (postBody != null){
Log.i(TAG, " createConnection with POST with body" );
connection.setRequestMethod("POST");
connection.addRequestProperty("Content-Type", "application/json");
connection.setDoOutput(true);
DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
dStream.writeBytes(postBody);
dStream.flush();
dStream.close();
}
if (methodInvoked.equalsIgnoreCase("POST") && postBody == null ){
Log.i(TAG, " createConnection with POST without body" );
connection.setRequestMethod("POST");
connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");
//connection.addRequestProperty("Content-Type", "application/json");
}
if (putBody != null){
Log.i(TAG, " createConnection with PUT with body" );
connection.setRequestMethod("PUT");
connection.setDoOutput(true);
connection.addRequestProperty("Content-Type", "application/json");
DataOutputStream dStream = new DataOutputStream(connection.getOutputStream());
dStream.writeBytes(putBody);
dStream.flush();
dStream.close();
}
responseCode = connection.getResponseCode();
InputStream in= null;
if(responseCode >= HttpsURLConnection.HTTP_BAD_REQUEST)
{
in = connection.getErrorStream();
br = new BufferedReader( new InputStreamReader(connection.getErrorStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
String toBeReturned_1 = sb.toString();
Log.i(TAG, " createConnetion error received " + responseCode + " " + toBeReturned_1) ;
}
else{
br = new BufferedReader( new InputStreamReader(connection.getInputStream()));
StringBuilder sb = new StringBuilder();
String line = null;
while ((line = br.readLine()) != null) {
sb.append(line+"\n");
}
toBeReturned = sb.toString();
}
} catch (MalformedURLException e) {
error = e.getMessage();
e.printStackTrace();
} catch (IOException e) {
error = e.getMessage();
e.printStackTrace();
} catch (KeyManagementException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
finally{
try {
if (br!=null)
br.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Log.i(TAG, " createConnetion finally returned" + toBeReturned );
return toBeReturned;
}