Android 通过多协议发送HTTP Post时的进度对话和toast失败
我还是一个相对业余的安卓编程爱好者。我有一个很烦人的问题。当我在我的类中单击“发送”时,它不会显示进度对话框,也会忽略我对我的2个编辑文本按钮的验证。我的代码可能非常混乱和无序。我事先道歉 我需要做的是显示正在运行的进度对话,并在处理程序的末尾使其退出。我还需要我的祝酒词来展示,全班同学停止工作Android 通过多协议发送HTTP Post时的进度对话和toast失败,android,http,dialog,handler,toast,Android,Http,Dialog,Handler,Toast,我还是一个相对业余的安卓编程爱好者。我有一个很烦人的问题。当我在我的类中单击“发送”时,它不会显示进度对话框,也会忽略我对我的2个编辑文本按钮的验证。我的代码可能非常混乱和无序。我事先道歉 我需要做的是显示正在运行的进度对话,并在处理程序的末尾使其退出。我还需要我的祝酒词来展示,全班同学停止工作 public class share extends Activity { ProgressDialog dialog; DefaultHttpClient client = n
public class share extends Activity {
ProgressDialog dialog;
DefaultHttpClient client = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://api...");
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.send);
Button Deliver;
Deliver = (Button) findViewById (R.id.Send);
Deliver.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
final ProgressDialog dialog = ProgressDialog.show(share.this, "","Uploading...", true);
dialog.show();
Handler handler = new Handler();
handler.post(new Runnable() {
public void run() {
EditText etxt_user = (EditText) findViewById(R.id.user_email);
EditText etxt_pass = (EditText) findViewById(R.id.friend_email);
if(file == null){
Toast display = Toast.makeText(share.this, "There are no videos to send", Toast.LENGTH_SHORT);
display.setGravity(Gravity.BOTTOM|Gravity.LEFT, 0, 0);
display.show();
startActivity(new Intent("android.main.SHARE"));
}
else{
Pattern pattern= Pattern.compile(
"[a-zA-Z0-9\\+\\.\\_\\%\\-\\+]{1,256}" +
"\\@" +
"[a-zA-Z0-9][a-zA-Z0-9\\-]{0,64}" +
"(" +"\\." + "[a-zA-Z0-9][a-zA-Z0-9\\-]{0,25}" +")+"
);
Matcher matcher=pattern.matcher(etxt_user.getText().toString());// match the contents of the first edit text
Matcher matcher1=pattern.matcher(etxt_pass.getText().toString());
if (!matcher.matches()&&(etxt_user.getText().toString()==null))
{
Toast display1 = Toast.makeText(share.this, "Please enter correct email address", Toast.LENGTH_SHORT);
display1.show();
startActivity(new Intent("com..SHARE"));
}
else
{
//proceed with program
}
if (!matcher1.matches()&&!(etxt_pass.getText().toString()==null)){
Toast display2= Toast.makeText(share.this, "You entered wrong email Format in the second box", Toast.LENGTH_LONG);
display2.setGravity(Gravity.TOP|Gravity.LEFT, 0, 0);
startActivity(new Intent("com.apapa.vrsixty.SHARE"));
}
else
{
//proceed
}
try{
MultipartEntity me = new MultipartEntity();
me.addPart("file", new FileBody(new File("/sdcard/videocapture_example.H264")));
me.addPart("userEmail", new StringBody(etxt_user.getText().toString()));
me.addPart("friendEmail", new StringBody(etxt_pass.getText().toString()));
httppost.setEntity(me);
HttpResponse responsePOST = client.execute(httppost);
HttpEntity resEntity = responsePOST.getEntity();
InputStream inputstream = resEntity.getContent();
BufferedReader buffered = new BufferedReader(new InputStreamReader(inputstream));
StringBuilder stringbuilder = new StringBuilder();
String currentline = null;
while ((currentline = buffered.readLine()) != null) {
stringbuilder.append(currentline + "\n");
String result = stringbuilder.toString();
Log.v("HTTP UPLOAD REQUEST",result);
inputstream.close(); } }
catch (Exception e) {
e.printStackTrace();
}
}dialog.dismiss();
}
});
}
});
当我完成此操作并按send时,它会给我一个没有进度对话的黑屏,即使我对编辑文本进行了验证,或者如果没有要发送的文件,它也会运行程序,而不会停止程序并显示祝酒词。提前感谢各位看来您的httppost正在将其发送到“http://”,这不是一个完全有效的地址,这是您的问题的一部分 还有:那是逐字逐句的代码吗?它不可能运行。一开始你有这一行
new HttpPost("http://"");
结尾有两个引号,这实际上使第二个引号后面的所有内容都成为字符串,直到它变成结束引号。感谢您的回复。请原谅我的错误,请忽略第二行,我实际上将其作为新的HttpPost(“http://...api"). 它实际上是有效的,因为当我转到phpmyadmin中的api调试器时,我看到了post的结果。它只是没有显示对话或祝酒词。抱歉,“共享。这”是此代码所在的当前类,出于某种原因,它不允许我添加“这”而不显示错误。太好了,您的代码看起来好多了:)我会看一看。谢谢,从现在起我将接受您的建议。连我都很难读懂lol