کد اتصال که HttpURLConnectionاستفاده کردم نه apache httpclient چون پیشتبانی میشه بگزریم و اینکه برای وارد کردن اطلاعات در فیلدها هم اول همه پنجره ای زرین رو در کد پیاده کردم و فلیدها رو پر کردم و بعد ارسال کردم به سمت سرور
ساختن پنجره در کد :
byte[] loginByte = (UserName + ":" + PassWord).getBytes();
StringBuilder loginBuilder = new StringBuilder().
append("Basic ")
.append(Base64.encodeToString(loginByte,Base64.DEFAULT));
اعمال کد :
con.addRequestProperty("Authorization", loginBuilder.toString());
و در اخر در activity نام کاربری و رمز عبور رو به تابع پاس می دم :
protected String doInBackground(String... params) {
String content = HttpManager.getData(params[0], "namekarbari", "pass");
return content;
}
کد کلی تابع :
public static String getData(String uri, String UserName, String PassWord)
{
BufferedReader reader = null;
byte[] loginByte = (UserName + ":" + PassWord).getBytes();
StringBuilder loginBuilder = new StringBuilder().
append("Basic ")
.append(Base64.encodeToString(loginByte,Base64.DEFAULT));
try {
URL url = new URL(uri);
HttpURLConnection con = (HttpURLConnection) url.openConnection();
con.addRequestProperty("Authorization", loginBuilder.toString());
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(con.getInputStream()));
String line = null;
while ((line = reader.readLine()) != null){
sb.append(line+" \n");
}
return sb.toString();
}catch (Exception e){
e.printStackTrace();
return null;
}finally {
if (reader != null) {
try {
reader.close();
}catch (Exception e){
e.printStackTrace();
return null;
}
}
}
}
از کلاس AsyncTask استفاده کردم و فراخوانی تابع درون شه که من کامل قرار میدم که اشتباه پیش نیاد :
class MyTask extends AsyncTask<String, String, String> {
@Override
protected void onPreExecute() {
if (tasks.size() == 0) {
pb.setVisibility(View.VISIBLE);
}
tasks.add(this);
}
@Override
protected String doInBackground(String... params) {
String content = HttpManager.getData(params[0], "namekarbari", "pass");
return content;
}
@Override
protected void onPostExecute(String result) {
tasks.remove(this);
if (tasks.size() == 0) {
pb.setVisibility(View.INVISIBLE);
}
if (result == null) {
Toast.makeText(payamak.this,
"لطفا به اینترنت متصل شوید.",
Toast.LENGTH_LONG).show();
return;
}
ItemList = ItemJsonParser.parseFeed(result);
new UpdateDisplay();
}
}