我正在使用android中的retrofit向我在Node.js中创建的服务器发出POST请求。我已经处理了GET请求并且工作正常但是当我发帖请求时我无法获取数据。
我的守则如下:
的 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();
}
}
}
我定义了如下界面:
的 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)
我无法确定错误是什么以及如何解决。
答案 0 :(得分:2)
看起来问题出在服务器端(您不支持发布请求)。
尝试通过添加类似
的内容来支持它server.post('/city/:name', updateDBData);
之前
server.listen