如何连接连接到Web服务的Android App

时间:2013-02-09 15:09:31

标签: android

我创建了一个小应用程序,使用此应用程序,我想将数据(通过wifi或蓝牙)发送到PC /服务器。

  1. 我正在考虑创建一个可在PC上运行的网络服务,并会不断收听任何传入的客户请求。

  2. 一旦收到来自客户端的请求,就会进行数据传输。在webservice收到数据后,它会自动打开一个显示收到数据的应用程序/ GUI窗口。

  3. 我的问题是我可以在JAVA中使用TCP / IP创建Web服务并让它在后台持续运行并收听客户端请求吗? 另外,如果webservice检测到客户端请求并收到数据,我该如何启动GUI?

5 个答案:

答案 0 :(得分:1)

我建议在服务器端使用WS,并且可以在客户端使用Ksoap android library。我认为你的个人opninios是正确的:)创建一个后台线程,用新的数据更新UI。使用适合您的解决方案的AsyncTask,Loader或Handler。 (阅读more info的官方参考资料)。

我希望它能帮助你!

答案 1 :(得分:1)

使用SQL Server管理桌面上的数据,并在Visual Studio上使用.NET创建Web服务。

然后连接到应用程序中的Web服务,并使用Web服务从数据库设置/获取数据。

可能有用的链接:

如何在.NET中创建Web服务(不包括Android中的实现): http://srikanthtechnologies.com/blog/dotnet/wsdaljava.aspx

如何将您的服务与Android相关联:

http://seesharpgears.blogspot.in/2010/11/basic-ksoap-android-tutorial.html

http://www.codeproject.com/Articles/304302/Calling-Asp-Net-Webservice-ASMX-From-an-Android-Ap

http://adrianandroid.blogspot.in/2012/05/access-c-net-web-service-in.html

答案 2 :(得分:1)

最好的方法是创建Web服务并将应用程序连接到Web服务,您可以使用工具http://www.wsdl2code.com创建连接和解析数据所需的所有代码:)

答案 3 :(得分:1)

http://sidharthkumargth.github.io/UserConnection

https://github.com/sidharthkumargth/UserConnection

从上面的链接下载此userconnection.jar并导入您的库

示例:

public class MainActivity extends Activity implements ConnectionStatusListener

{   

UserConnection uc,uc1;
ImageView iv;
TextView tv;
ProgressBar pb;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    getActionBar().setSubtitle("Only for test");
    iv=(ImageView)findViewById(R.id.imageView1);
    tv=(TextView)findViewById(R.id.ttt);
    pb=(ProgressBar)findViewById(R.id.progressBar1);
     uc=new UserConnection(2);    // here 2 is number of objects sent to web service email and password, if the number of objects is n then it will be uc=new UserConnection(n);
    uc.setHTTPMethod("POST");
    uc.setupValues("email", "test@gmail.com");
    uc.setupValues("password", "test");

    uc.setConnectionStatusListener(this);
    //uc.startConnection("http://test.com/tb/login.php");
    //uc.startDownloadfrom("http://www.kingsoftstore.com/images/presentation-templates/report-ppt-template-059.dpt","/sdcard/downloadedfile.jpg");
    //uc.startDownloadImage("http://i00.i.aliimg.com/wsphoto/v0/1157302568/2013-girls-new-style-popular-purple-sexy-lingeries-LC1105-free-shipping.jpg");
    uc.startDownloadfrom("http://www.technotrigger.com/wp-content/uploads/2014/01/house-in-green-field.jpg","/sdcard/downloadedfile1.jpg");
    uc.startDownloadfrom("http://upload.wikimedia.org/wikipedia/commons/3/36/Hopetoun_falls.jpg","/sdcard/downloadedfile2.jpg");
    uc.startDownloadfrom("http://upload.wikimedia.org/wikipedia/commons/1/1a/Bachalpseeflowers.jpg","/sdcard/downloadedfile3.jpg");
    uc.startDownloadfrom("http://tmacfitness.com/wp-content/uploads/2013/04/Beauty-of-nature-random-4884759-1280-800.jpg","/sdcard/downloadedfile4.jpg");
    uc.startDownloadfrom("http://freedwallpaper.com/wp-content/uploads/2014/03/6-autumn-nature-sandbox-images_2053316.jpg","/sdcard/downloadedfile5.jpg");

    //uc.startMultipartConnection("http://www.google.co.in");
    uc1=new UserConnection(0);
        uc1.setHTTPMethod("GET");
        //"/sdcard/downloadedfile.jpg"
        uc1.setConnectionStatusListener(this);
        uc1.startConnection("http://www.facebook.com");
}
//Toast.makeText(getApplicationContext(), message, 1).show();

@Override
public void onError(Status arg0) {
    // TODO Auto-generated method stub

    try {
        Toast.makeText(getApplicationContext(), "error"+arg0.getErrorMessage(), 1).show();
    } catch (UserException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

@Override
public void onStart(Status arg0) {
    // TODO Auto-generated method stub
    try{
    if(arg0.getConnectionHolder()==uc){
    Toast.makeText(getApplicationContext(), "uc"+arg0.getMessage(), 1).show();
    }else if(arg0.getConnectionHolder()==uc1){
        Toast.makeText(getApplicationContext(), "uc1"+arg0.getMessage(), 1).show();
        }
    }catch(UserException e){}
}

@Override
public void onStop(Status arg0) {
    // TODO Auto-generated method stub


    //Log.d(arg0.getConnectionHolder().toString(), arg0.getResponse()+"");
    try {

            iv.setImageDrawable(Drawable.createFromPath(arg0.getFile()));

        //Toast.makeText(getApplicationContext(), arg0.getConnectionHolder()+"++"+arg0.getResponse(), Toast.LENGTH_LONG).show();
    } catch (UserException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

@Override
public void onProgressUpdate(Status arg0) {
    // TODO Auto-generated method stub
    try {
        tv.setText("Progress "+arg0.getProgress());
        pb.setProgress(arg0.getProgress());
    } catch (UserException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

}

答案 4 :(得分:0)

您可以通过使用node.js或php创建端点/路由,然后将其托管在云上来轻松实现此目的。我想我现在喜欢使用Firebase进行托管,您可能会想尝试一下它真的很酷。在创建将要连接到您的数据库的终结点之后,您将根据您想要从您的移动应用程序中的数据库获取的内容使用http get或post请求。 如果您是为Android创建的,则对HTTP连接使用Retrofit。