2

サーバー上のWebサービスへのURLリンクを呼び出して、ユーザーデータをデータベースに挿入しようとしています:例:これはリンクです:

http://mydomain.com/AndroidWebService.asmx/nInsertInfo?id=12&lat=23.2222&log=12322

したがって、この URL を非表示モードで呼び出したいと思います。

4

6 に答える 6

5

androidandroidAsyncTaskを使用してデータを投稿します。アプリケーションが開いているときは、Androidのバックグラウンドで動作します。AsyncTaskを使用すると、UIスレッドを適切かつ簡単に使用できます。このクラスを使用すると、スレッドやハンドラーを操作しなくても、バックグラウンド操作を実行してUIスレッドで結果を公開できます。

ありがとう。

于 2012-12-27T08:46:23.420 に答える
4

貴重なソリューションをありがとうございました。

私はWebViewを作成することによってそれをしました

WebView myWebView = (WebView) findViewById(R.id.view1);
myWebView.loadUrl(urll);

次に、WebViewを必要に応じて管理できます。非表示にしたり、エラーとしての配置や結果が返されたりします。

于 2012-12-27T11:24:13.910 に答える
2

多分この例はあなたを助けるでしょう:

public class URLConnectionTask <Result> extends AsyncTask<URL, Void, InputStream> {


        @Override
        protected InputStream doInBackground(URL... params) {
            InputStream is;
            HttpUriRequest request;
            URI uri;
            HttpResponse response;

            if (params.length == 0)
                return null;

            is = null;CredentialsProvider credProvider = new BasicCredentialsProvider();

        if (userName != null && userName.length() > 0 && password != null && password.length() > 0)
            credProvider.setCredentials(new AuthScope(AuthScope.ANY_HOST, AuthScope.ANY_PORT),
                new UsernamePasswordCredentials(userName, password));

        //
        DefaultHttpClient http = new DefaultHttpClient();
        http.setCredentialsProvider(credProvider);
        //

        uri = URI.create(params[0].toString());

        if (isPost)
            request = new HttpPost(uri);
        else
            request = new HttpGet(uri);

        try {           
            response = http.execute(request);
            is = response.getEntity().getContent();

            //Log.d(TAG, "doInBackground() response: "+EntityUtils.toString(response.getEntity()));
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }


       if (processingHandler != null && is != null)
           processingResult = processingHandler.processResponse(is);// processingHandler is an instance which implements ProcessingHandler interface (ex. VizMarket). processResponse() is implemented on this class.

       return is;
    }

    @Override
        protected void onPostExecute (InputStream result) {
            input = result;

            if (result == null)
                return;
                    //instruction for inserting data on db .... 

            try {
                result.close();
            } catch (IOException e) {
            }
        }
    }
于 2012-12-27T09:03:05.930 に答える
1

AsyncTaskでURLを呼び出す必要があります。例:AsyncTaskクラスからデータを返す

于 2012-12-27T08:45:45.493 に答える
0

スレッドを使用してサーバーからデータを取得し、DB に挿入するか、AsyncTask を使用できる Android に挿入する必要があります。

于 2012-12-27T08:51:09.300 に答える
0

:ClickableSpan を検索して、挿入コードを OnClick 本文に挿入できます~ のように:

String yourTextStr;
    SpannableString sp = new SpannableString(yourTextStr);
    int start;//the start of your url in the text; 
    int end ;//the end of your url in the text; 
    sp.setSpan(new ClickableSpan() {
        @Override
        public void onClick(View widget) {
            //Your Insert Code
        }
    }, start, end, Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
于 2012-12-27T08:51:31.000 に答える