2014-09-25 67 views
2

服务器我正在使用retrofit在android中的一个POST请求我已经在Node.js.中创建的服务器。我已经在GET请求工作,它工作正常,但是当我提出发布请求时,我无法获取数据。
如何使用retrofit进行POST请求在android

我的代码如下: 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 我正在印刷控制台上的消息。但是当我通过机器人进行改装要求我收到错误,如

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) 

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

回答

2

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

尝试通过将类似

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

server.listen 
+0

我把事情后支持..但我得到的错误.. d /改造:{ “代码”: “BadMethod”,“message”:“/ city/update不支持POST”} – anand 2014-09-25 07:02:40

+0

这绝对是服务器端问题,请检查restify API的文档:http://mcavage.me/node-restify/ – epint 2014-09-25 07:12:43

+0

@an并且您重新启动更改后的服务器? – 2016-03-01 12:15:05

相关问题