簡體   English   中英

HTTP中的Android Web服務錯誤

[英]Android web service error in http

在我的項目中,要使用http類訪問webservice服務,但它無法正常工作,並且我的項目停止了。

有人可以告訴我另一種訪問webservice方式,而不是使用http 先感謝您

class httpclass {
    String result;

    public String server_conn(String user_url) 
    {
        // String user_url="";

        String user_url3=user_url.replaceAll(" ","%20");
        String user_url2=user_url3.replaceAll("\n","%0D");


        HttpClient client = new DefaultHttpClient();
        HttpGet siteRequest = new HttpGet(user_url2);
        StringBuilder sb = new StringBuilder();

        HttpResponse httpResponse;

        try {
            httpResponse = client.execute(siteRequest);
            HttpEntity entity = httpResponse.getEntity();
            InputStream in = entity.getContent();

            String line = null;
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(in));
            while ((line = reader.readLine()) != null)
            {

                sb.append(line);

            }

            result = sb.toString();

        } catch (ClientProtocolException e) 
        {
            // TODO Auto-generated catch block
            e.printStackTrace();
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        return result;
    }

}

登錄表單

public class LoginForm extends FragmentActivity {
    /** Called when the activity is first created. */

    TextView txt1, txt2, err,forget;
    EditText name;
    EditText pass;
    Button click,vend;
    CheckBox savepass;
    Button newuser;
    Button signin;
    @SuppressWarnings("unused")
    private Cursor signin1;


    SharedPreferences sharedPreferences=null;

    public static String str1, str2;
    public static String result;
    public  static String username;
    ProgressDialog myProgressDialog = null;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);       BugSenseHandler.initAndStartSession(this, "68640bea");
        setContentView(R.layout.login);


        vend=(Button)findViewById(R.id.vend);
        name = (EditText) findViewById(R.id.username);
        pass = (EditText) findViewById(R.id.password);
        savepass=(CheckBox)findViewById(R.id.savepass);
        Button  cancel = (Button) findViewById(R.id.cancel);
        //Button  back = (Button) findViewById(R.id.back);
        cancel.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {   

                Intent second = new Intent( LoginForm.this,canceluser.class);   

                startActivity(second);
                finish();

            }

        });

        sharedPreferences=PreferenceManager.getDefaultSharedPreferences(this);

        String name1=sharedPreferences.getString("p_name", "");
        name.setText(name1.toString());

        String pass1=sharedPreferences.getString("p_pass", "");
        pass.setText(pass1.toString());


       //s forget=(TextView)findViewById(R.id.forget);
        signin = (Button) findViewById(R.id.signin);
        click = (Button) findViewById(R.id.click);
        newuser = (Button) findViewById(R.id.signup);
        vend.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent viewIntent =
                          new Intent("android.intent.action.VIEW",
                            Uri.parse("http://www.iwedplanner.com/vendor/vendorhome.aspx"));
                          startActivity(viewIntent);
            }});

        click.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent1 = new Intent(LoginForm.this, forgetpwd.class);
                startActivity(intent1);
                finish();
            }});

        signin.setOnClickListener(new OnClickListener() 
        {
            @Override
            public void onClick(View v) {


                if(name.getText().toString().equals(""))
                {
                alertbox("Message!","Enter Your Username");
                name.requestFocus();
                }
            else if(pass.getText().toString().equals(""))
                {
                alertbox("Message!","Enter Your Password");
                pass.requestFocus();
                }
                else
                {
                str1 = name.getText().toString();
                str2 = pass.getText().toString();

                boolean value = false;
                // validuser();
                ConnectivityManager cm = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);


                NetworkInfo info = cm.getActiveNetworkInfo();
                if (info != null && info.isAvailable()) {
                               value = true;


                    openconn(str1, str2);


                }
                else
                {
                    alertbox("Message!", "No Internet Connection!");
                }
            }
            }

        });

        newuser.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                newuser();

            }
        });

    }

    public void openconn(String strr1, String strr2) 
    {

        if (!strr1.equals("") && !strr2.equals(""))

        {
            err = (TextView) findViewById(R.id.err);

        //  String user_url = "http://iwedplanner.com/mobile/MLogin.aspx?uname="+ strr1 + "&pwd=" + strr2;

            String user_url="http://mobileapps.iwedplanner.com/mobileapps/iwedplanner/mobile/MLogin.aspx?uname="+ strr1 + "&pwd=" + strr2;



            httpclass obj = new httpclass();
            result = obj.server_conn(user_url);

          //  alertbox("",""+result);

            if (result != null) 
            {
                StringTokenizer st = new StringTokenizer(result, "|");
                result = st.nextToken();

                if (result.equals("InvalidUser ")) 
                {


                    Dialog locationError = new AlertDialog.Builder(
                            LoginForm.this).setIcon(0).setTitle("Message!")
                            .setPositiveButton(R.string.yes, null).setMessage(
                                    "Sorry, Invalid Username or Password ")
                            .create();
                    locationError.show();
                    name.requestFocus();
                } 
                else if(result.equals(strr1)) 
                {
                    // Toast.makeText(getBaseContext(),"Valid User",Toast.LENGTH_SHORT).show();

                    if(savepass.isChecked())
                    {
                        SharedPreferences.Editor editor=sharedPreferences.edit();
                        editor.putString("p_name",name.getText().toString());                        
                        //editor.putString("p_pass",pass.getText().toString());
                        editor.commit();
                    }
                    else
                    {
                        SharedPreferences.Editor editor=sharedPreferences.edit();
                        editor.putString("p_name", "");
                        editor.putString("p_pass","");
                        editor.commit();
                    }
                    validuser();
                }

                else
                {
                    alertbox("Message!","Error in network connection");
                }
            }

        }
    }

    public void validuser() 
    {

    username=str1;

        name.setText("");
        pass.setText("");           
        Intent userintent = new Intent(this, welcomeuser1.class);
        //userintent.putExtra("name5",str1);    

      //Intent userintent=new Intent(this,WeddingInfo.class);
        startActivity(userintent);
        finish();   



    }

    public void newuser() {

        Intent userintent1 = new Intent(this, newuserform.class);
        startActivity(userintent1);
        finish();
    }
    protected void alertbox(String title, String mymessage) {
        new AlertDialog.Builder(this)
                .setMessage(mymessage)
                .setTitle(title)
                .setCancelable(true)
                .setNeutralButton(android.R.string.ok,
                        new DialogInterface.OnClickListener() {
                            @Override
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {
                            }
                        }).show();
    }
    @Override
      public void onStart() {
        super.onStart();
       // The rest of your onStart() code.
        // //  EasyTracker.getInstance(this).activityStart(this);  // Add this method.
      }

      @Override
      public void onStop() {
        super.onStop();
        // The rest of your onStop() code.
        // EasyTracker.getInstance(this).activityStop(this);  // Add this method.
      }
}

錯誤:APK C打包過程中文件重復:\\ Users \\ sentientit \\ Documents \\ Wed Studio \\ app \\ build \\ outputs \\ apk \\ app-debug-unaligned.apk

Path in archive: META-INF/LICENSE.txt

Origin 1: C:\Users\sentientit\Documents\Wed Studio\app\libs\twitter4j.jar

1來源2:C:\\ Users \\ sentientit.gradle \\ caches \\ modules-2 \\ files-2.1 \\ joda-time \\ joda-time \\ 2.4 \\ 89e9725439adffbbd41c5f5c215c136082b34a7f \\ joda-time-2.4.jar

您可以在build.gradle中忽略這些文件:

android {
  packagingOptions {
    exclude 'META-INF/LICENSE.txt'
  }
}

錯誤:任務':app:packageDebug'的執行失敗。

在APK META-INF / LICENSE.txt文件中復制的重復文件:文件1:C:\\ Users \\ sentientit \\ Documents \\ Wed Studio \\ app \\ libs \\ twitter4j.jar

File 2: C:\Users\sentientit\.gradle\cache``s\modules-2\files-2.1\joda-time\joda-time\2.4\89e9725439adffbbd41c5f5c215c136082b34a7f\joda-time-2.4.jar

調用AsyncTask中的方法server_conn()並傳遞url

private class AsyncTaskTest extends AsyncTask<String, Void, Void>
{
    @Override
    protected void onPreExecute() {
        super.onPreExecute();
    }

    @Override
    protected Void doInBackground(String... strings) {
        server_conn(strings[0]);
        return null;
    }

    @Override
    protected void onPostExecute(Void aVoid) {
        super.onPostExecute(aVoid);
    }
}

並使用以下語法調用asynctastk

new AsyncTaskTest().execute(url);

您面臨NetworkOnMainThread異常,您所要做的就是添加以下代碼:

StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
     .detectAll()
     .penaltyLog()
     .build();
 StrictMode.setThreadPolicy(policy); 

有關更多詳細信息,您可以檢查開發人員站點

您可以這樣做:

Web服務的AsyncTask

private class AsyncCaller extends AsyncTask<Void, Void, Void>
{
    ProgressDialog pdLoading = new ProgressDialog(AsyncExample.this);

    @Override
    protected void onPreExecute() {
        super.onPreExecute();

        //this method will be running on UI thread
        pdLoading.setMessage("Loading...");
        pdLoading.show();
    }
    @Override
    protected Void doInBackground(Void... params) {

        String serverGETResponse = getJsonDataStringFormat("Your_Url", "GET", "", "LOGIN_ACTIVITY");
        String serverPOSTResponse = getJsonDataStringFormat("Your_Url", "POST", "YOUR_JSON_STRING", "LOGIN_ACTIVITY");    
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);

        //this method will be running on UI thread

        pdLoading.dismiss();
       }

    }

現在在后台線程中從服務器獲取響應:

public static String getJsonDataStringFormat(String url, String method,String jObjStr, String tag) {
        InputStream is = null;
        String Root_Response = null;
        HttpResponse httpResponse;
        HttpParams httpParameters = new BasicHttpParams();
        DefaultHttpClient httpClient;
        HttpConnectionParams.setConnectionTimeout(httpParameters,connectionTimeOut);
        HttpConnectionParams.setSoTimeout(httpParameters, socketTimeOut);
        try {
            httpClient = new DefaultHttpClient(httpParameters);
            url = url.replace(" ", "%20");
            if (method == "POST") {
                HttpPost httpPost = new HttpPost(url);
                httpPost.setEntity(new StringEntity(jObjStr));
                httpResponse = httpClient.execute(httpPost);
                is = httpResponse.getEntity().getContent();
            } else if (method == "GET") {
                HttpGet httpGet = new HttpGet(new URI(url));
                httpResponse = httpClient.execute(httpGet);
                is = httpResponse.getEntity().getContent();
            }

            Root_Response = convertStreamToString(is);
            Log.i(tag, Root_Response);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }catch (URISyntaxException e) {
            e.printStackTrace();
        }

        return Root_Response;
    }

將服務器的響應轉換為String

public static String convertStreamToString(InputStream inputStream)
            throws IOException {
        if (inputStream != null) {
            StringBuilder sb = new StringBuilder();
            String line;
            try {
                BufferedReader reader = new BufferedReader(
                        new InputStreamReader(inputStream, "UTF-8"));
                while ((line = reader.readLine()) != null) {
                    sb.append(line).append("\n");
                }
            } finally {
                inputStream.close();
            }
            return sb.toString();
        } else {
            return "";
        }
    }

希望對您有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM