我正在使用 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/