Java android向服务器发送两个参数
大家好,我想向服务器发送两个参数Java android向服务器发送两个参数,java,android,web-services,http-get,Java,Android,Web Services,Http Get,大家好,我想向服务器发送两个参数 安卓id 已安装的应用程序信息 我写了一个代码来了解已安装的应用程序,并在logcat和android_id中打印,但当我尝试在服务器上发送已安装的应用程序信息时,我出现了一个错误 代码 public class MainActivity extends Activity { String AppName; String android_id; PackageInfo packageInfo; String install
public class MainActivity extends Activity {
String AppName;
String android_id;
PackageInfo packageInfo;
String installedapps;
StringBuilder sb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android_id = Secure.getString(MainActivity.this.getContentResolver(),
Secure.ANDROID_ID);
getInstalledApps();
}
public void getInstalledApps() {
List<PackageInfo> PackList = getPackageManager()
.getInstalledPackages(0);
sb = new StringBuilder();
for (int i = 0; i < PackList.size(); i++) {
PackageInfo PackInfo = PackList.get(i);
if (((PackInfo.applicationInfo.flags & ApplicationInfo.FLAG_SYSTEM) != 0) != true) {
AppName = PackInfo.applicationInfo.loadLabel(
getPackageManager()).toString();
Log.d("install ", AppName);
sb.append(AppName + "\"");
}
}
Toast.makeText(getApplicationContext(), sb.toString(),
Toast.LENGTH_LONG).show();
Log.d("install232222222 ", sb.toString());
connectWithHttpGet(android_id, sb.toString());
}
private void connectWithHttpGet(String diviceID, String InstalledApps) {
class HttpGetAsyncTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String deviceId = params[0];
String list = params[1];
System.out.println("diviceID is :" + deviceId
+ " InstalledApps is :" + list);
HttpClient httpClient = new DefaultHttpClient();
HttpGet httpGet = new HttpGet(
"http://************/api/***********.aspx?deviceId="
+ deviceId + "&list=" + list);
try {
HttpResponse httpResponse = httpClient.execute(httpGet);
System.out.println("httpResponse");
InputStream inputStream = httpResponse.getEntity()
.getContent();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream);
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
StringBuilder stringBuilder = new StringBuilder();
String bufferedStrChunk = null;
while ((bufferedStrChunk = bufferedReader.readLine()) != null) {
stringBuilder.append(bufferedStrChunk);
}
System.out.println("Returning value of doInBackground :"
+ stringBuilder.toString());
return stringBuilder.toString();
} catch (ClientProtocolException cpe) {
System.out
.println("Exception generates caz of httpResponse :"
+ cpe);
cpe.printStackTrace();
} catch (IOException ioe) {
System.out
.println("Second exception generates caz of httpResponse :"
+ ioe);
ioe.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (result.equals("working")) {
Toast.makeText(getApplicationContext(),
"HTTP GET is working...", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(), "Invalid...",
Toast.LENGTH_LONG).show();
}
}
}
HttpGetAsyncTask httpGetAsyncTask = new HttpGetAsyncTask();
httpGetAsyncTask.execute(diviceID, InstalledApps);
}
}
公共类MainActivity扩展活动{
字符串AppName;
字符串名称;
PackageInfo PackageInfo;
字符串安装apps;
为某人做准备;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
android_id=Secure.getString(MainActivity.this.getContentResolver(),
安卓(ANDROID),;
getInstalledApps();
}
public void getInstalledApps(){
List PackList=getPackageManager()
.getInstalledPackages(0);
sb=新的StringBuilder();
对于(int i=0;i
在toast消息中,我可以显示已安装的应用程序列表(Log.d(“install232222222”,sb.toString());
),但我无法将其发送到服务器
如果我将connectWithHttpGet(android,sb.toString());
更改为connectWithHttpGet(android,Hello”);
则我可以在服务器上发送android和Hello,但我的问题是sb.toString()
如果有人知道我的问题的解决方法,请帮助我
谢谢为什么要使用
sb.append(AppName + "\"");
没有那条线的支票
添加这一行
AppName.replace("\n", "");
Http Get请求有maxlength限制,您的请求是否超过该限制
我删除了这一行,它正常工作,但我如何才能在一个列表中发送此已安装的应用程序?