Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
最简单的例子是Android和WebAPI.Net不起作用_Android_.net_Asp.net Web Api - Fatal编程技术网

最简单的例子是Android和WebAPI.Net不起作用

最简单的例子是Android和WebAPI.Net不起作用,android,.net,asp.net-web-api,Android,.net,Asp.net Web Api,我是Android的一名新生,但我尝试设计一个简单的应用程序,它必须发送一些信息并从WebAPI.Net接收数据。我写了一些例子,但不起作用。我想发送图书信息,如作者和标题,然后必须将这些信息插入.Net中的DB中。我哪里错了? 这是我的Web API方法POST、GET等 public class ValuesController : ApiController { BookContext db = new BookContext(); // GET api/

我是Android的一名新生,但我尝试设计一个简单的应用程序,它必须发送一些信息并从WebAPI.Net接收数据。我写了一些例子,但不起作用。我想发送图书信息,如作者和标题,然后必须将这些信息插入.Net中的DB中。我哪里错了? 这是我的Web API方法POST、GET等

   public class ValuesController : ApiController
    {
    BookContext db = new BookContext();


    // GET api/values
    public IEnumerable<Book> GetBooks()
    {
        return db.Books;
    }

    // GET api/values/5
    public Book GetBook(int id)
    {
        Book book = db.Books.Find(id);
        return book;
    }

    // POST api/values
    [HttpPost]
    public void CreateBook([FromBody]Book book)
    {
        db.Books.Add(book);
        db.SaveChanges();
    }


    // PUT api/values/5
    [HttpPut]
    public void EditBook(int id, [FromBody]Book book)
    {
        if (id == book.Id)
        {
            db.Entry(book).State = System.Data.EntityState.Modified;
            db.SaveChanges();
        }
    }

    // DELETE api/values/5
    public void DeleteBook(int id)
    {
        Book book = db.Books.Find(id);
        if (book != null)
        {
            db.Books.Remove(book);
            db.SaveChanges();
        }
    }
}
另外,我使用Fiddler进行研究,但通过这个工具我看不到任何数据,所以我认为我的应用程序无法工作

我换了,但也没用。现在我试图发送一个Get请求,但没有成功 我的Web API MVC可能有问题吗? 包com.example.newhttptest

   import java.io.BufferedReader;
   import java.io.IOException;
   import java.io.InputStream;
   import java.io.InputStreamReader;

   import org.apache.http.HttpResponse;
   import org.apache.http.client.HttpClient;
   import org.apache.http.client.methods.HttpGet;
   import org.apache.http.impl.client.DefaultHttpClient;

   import android.net.ConnectivityManager;
   import android.net.NetworkInfo;
   import android.os.AsyncTask;
   import android.os.Bundle;
   import android.util.Log;
   import android.widget.EditText;
   import android.widget.TextView;
   import android.widget.Toast;
   import android.app.Activity;

   public class MainActivity extends Activity {

EditText etResponse;
TextView tvIsConnected;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // get reference to the views
    etResponse = (EditText) findViewById(R.id.etResponse);
    tvIsConnected = (TextView) findViewById(R.id.tvIsConnected);

    // check if you are connected or not
    if(isConnected()){
        tvIsConnected.setBackgroundColor(0xFF00CC00);
        tvIsConnected.setText("You are conncted");
    }
    else{
        tvIsConnected.setText("You are NOT conncted");
    }

    // show response on the EditText etResponse 
    //etResponse.setText(GET("http://hmkcode.com/examples/index.php"));

    // call AsynTask to perform network operation on separate thread
    new HttpAsyncTask().execute("http://localhost:3815/api/values/1");
}

public static String GET(String url){
    InputStream inputStream = null;
    String result = "";
    try {

        // create HttpClient
        HttpClient httpclient = new DefaultHttpClient();

        // make GET request to the given URL
        HttpResponse httpResponse = httpclient.execute(new HttpGet(url));

        // receive response as inputStream
        inputStream = httpResponse.getEntity().getContent();

        // convert inputstream to string
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);
        else
            result = "Did not work!";

    } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
    }

    return result;
}

private static String convertInputStreamToString(InputStream inputStream) throws IOException{
    BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
    String line = "";
    String result = "";
    while((line = bufferedReader.readLine()) != null)
        result += line;

    inputStream.close();
    return result;

}

public boolean isConnected(){
    ConnectivityManager connMgr = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()) 
            return true;
        else
            return false;   
}
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {

        return GET(urls[0]);
    }
    // onPostExecute displays the results of the AsyncTask.
    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(getBaseContext(), "Received!", Toast.LENGTH_LONG).show();
        etResponse.setText(result);
   }
}

}很抱歉,您正在尝试在UI线程中执行网络命令。谷歌已经禁用了这个功能。尝试在后台使用AsyncTask或Runnable执行此操作

   import java.io.BufferedReader;
   import java.io.IOException;
   import java.io.InputStream;
   import java.io.InputStreamReader;

   import org.apache.http.HttpResponse;
   import org.apache.http.client.HttpClient;
   import org.apache.http.client.methods.HttpGet;
   import org.apache.http.impl.client.DefaultHttpClient;

   import android.net.ConnectivityManager;
   import android.net.NetworkInfo;
   import android.os.AsyncTask;
   import android.os.Bundle;
   import android.util.Log;
   import android.widget.EditText;
   import android.widget.TextView;
   import android.widget.Toast;
   import android.app.Activity;

   public class MainActivity extends Activity {

EditText etResponse;
TextView tvIsConnected;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    // get reference to the views
    etResponse = (EditText) findViewById(R.id.etResponse);
    tvIsConnected = (TextView) findViewById(R.id.tvIsConnected);

    // check if you are connected or not
    if(isConnected()){
        tvIsConnected.setBackgroundColor(0xFF00CC00);
        tvIsConnected.setText("You are conncted");
    }
    else{
        tvIsConnected.setText("You are NOT conncted");
    }

    // show response on the EditText etResponse 
    //etResponse.setText(GET("http://hmkcode.com/examples/index.php"));

    // call AsynTask to perform network operation on separate thread
    new HttpAsyncTask().execute("http://localhost:3815/api/values/1");
}

public static String GET(String url){
    InputStream inputStream = null;
    String result = "";
    try {

        // create HttpClient
        HttpClient httpclient = new DefaultHttpClient();

        // make GET request to the given URL
        HttpResponse httpResponse = httpclient.execute(new HttpGet(url));

        // receive response as inputStream
        inputStream = httpResponse.getEntity().getContent();

        // convert inputstream to string
        if(inputStream != null)
            result = convertInputStreamToString(inputStream);
        else
            result = "Did not work!";

    } catch (Exception e) {
        Log.d("InputStream", e.getLocalizedMessage());
    }

    return result;
}

private static String convertInputStreamToString(InputStream inputStream) throws IOException{
    BufferedReader bufferedReader = new BufferedReader( new InputStreamReader(inputStream));
    String line = "";
    String result = "";
    while((line = bufferedReader.readLine()) != null)
        result += line;

    inputStream.close();
    return result;

}

public boolean isConnected(){
    ConnectivityManager connMgr = (ConnectivityManager) getSystemService(this.CONNECTIVITY_SERVICE);
        NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();
        if (networkInfo != null && networkInfo.isConnected()) 
            return true;
        else
            return false;   
}
private class HttpAsyncTask extends AsyncTask<String, Void, String> {
    @Override
    protected String doInBackground(String... urls) {

        return GET(urls[0]);
    }
    // onPostExecute displays the results of the AsyncTask.
    @Override
    protected void onPostExecute(String result) {
        Toast.makeText(getBaseContext(), "Received!", Toast.LENGTH_LONG).show();
        etResponse.setText(result);
   }
}