java - 如何使用 android 中的服务器改造来发出 POST 请求

标签 java android node.js retrofit

我正在使用 android 中的改造向我在 Node.js 中创建的服务器发出 POST 请求。我已经处理过 GET 请求,并且工作正常,但是当我发出 post 请求时,我无法获取数据。

我的代码如下: DataService.java

public class DataService extends Service{
  private final class ServiceHandler extends Handler {
    public ServiceHandler(Looper looper) {
        super(looper);
    }

    @Override
    public void handleMessage(Message msg) {
        try {           
            computeDistance(startLocation);           
        } catch (Exception e) {
            e.printStackTrace();
        }
        stopSelf(msg.arg1);
    }

 public void computeDistance(String endLocation){
       RestAdapter restAdapter = new RestAdapter.Builder()
                .setEndpoint(Constants.Http.URL_BASE)
                .setLogLevel(RestAdapter.LogLevel.FULL)
                .build();

        ApiService cityService = restAdapter.create(ApiService.class);
        cityService.updateCityData();
    }
  }
}

我定义的接口(interface)如下:
ApiService.java

public interface ApiService {

    @POST("/city/update")
    public String updateCityData();
}

我的 Node.js 文件如下:

function updateDBData(req, res, next) {
    console.log('Entered into the UpdateDBDATa');
    var sapi = {"data": "false"};
    res.send(200, sapi).end();
}

/**-------- creating a server --------**/
var server = restify.createServer({name: 'crunchbase'});
server.get('/city/:name', updateDBData);
/**------- server listening port -------**/
server.listen(appContext.port, function () {
  console.log('%s listening at %s', server.name, server.url);
});

当我调用 Node.js 服务器时 http://www.api.com:8084/search/update 我在控制台上打印了消息。但是当我通过 android 发出改造请求时,我收到如下错误

  D/Retrofit﹕ <--- HTTP 405 http://www.api.com:8084/city/update (439ms)<br>
    D/Retrofit﹕ : HTTP/1.1 405 Method Not Allowed<br>
    D/Retrofit﹕ Access-Control-Allow-Headers: Accept, Accept-Version, Content-Length, Content-MD5 , Content-Type, Date, X-Api-Version<br>
    D/Retrofit﹕ Access-Control-Allow-Methods: GET<br>
    D/Retrofit﹕ Access-Control-Allow-Origin: *<br>
    D/Retrofit﹕ {"code":"BadMethod","message":"/city/update does not support POST"}
    D/Retrofit﹕ <--- END HTTP (67-byte body)

我无法弄清楚错误是什么以及如何解决它。

最佳答案

看起来问题出在服务器端(您不支持 post 请求)。

尝试通过添加类似内容来支持它

server.post('/city/:name', updateDBData);

之前

server.listen

关于java - 如何使用 android 中的服务器改造来发出 POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26032255/

相关文章:

java - 为什么Java中的 boolean 值只接受真或假?为什么不是 1 或 0 呢?

java - -libraryjars,proguard 的目的是什么?

java - 为什么我的 ItemListener 不起作用?

java - 处理并发的正确方法是什么?

java - 无法解析 clj-http

android - 如何使用 --stacktrace 选项运行以获取堆栈跟踪

android - 如何在 Android TV 上安装 Beta (Crashlytics) 分布式应用程序

node.js - 关闭连接而不是设置 'keep-alive'

node.js - 'npm install'在app根目录生成很多不需要的文件

javascript - 在 Jest 模拟期间获得原始实现