2017-09-07 5 views
2

Selon la documentation void setRequestMethod (String method) ici:Comment utiliser ma propre méthode avec un objet HttpURLConnection sur Android?

https://developer.android.com/reference/java/net/HttpURLConnection.html#setRequestMethod%28java.lang.String%29

Les méthodes autorisées sont limitées à:

  • GET
  • POST
  • TÊTE
  • OPTIONS
  • PUT
  • SUPPRIMER
  • TRACE

J'ai un serveur permettant d'accéder à une liste des messages et l'une des options que j'ai est de récupérer le message suivant:

NEXT /api/1/message 

Cependant, lorsque j'essaie de mettre NEXT comme méthode dans le JavaScript HttpURLConnection j'obtiens une erreur:

E/MsgProcessingService: Failed while handling a message: java.net.ProtocolException: Unknown method 'NEXT'; must be one of [OPTIONS, GET, HEAD, POST, PUT, DELETE, TRACE]

Existe-t-il une méthode non-hacky pour contourner cette limitation de méthode?

De toute évidence, je peux créer un nouveau point d'accès comme suivre sur mon serveur, mais j'espérais que je ne devrais pas faire ça ...

GET /api/1/message/next 
+1

Il doit y avoir une bonne raison pour laquelle ils ne permettaient pas aux NEXT, je imaginerait. –

+1

Quelle version de la spécification HTTP définit une méthode 'NEXT'? – CommonsWare

+0

@CommonsWare WebDAV ajoute de nombreuses autres méthodes, pourquoi ne seriez-vous pas capable de le faire avec n'importe quel type d'extension web ?! –

Répondre

5

n °

Ces « méthodes » sont définis dans le HTTP spec. Cette méthode vérifie la chaîne par rapport à un tableau constant. Comme le dit la spécification, ces méthodes peuvent être étendues, mais c'est très rare. The Heroku docs discuss this.

connexes:

+0

Et pourtant la [documentation HTTP] (https://tools.ietf.org/html/rfc2616#section-5.1.1) permet n'importe quelle extension ... Je peux utiliser n'importe quelle méthode que je veux dans 'wget',' curl ', JavaScript ... C'est triste. Tant pis. –

+1

Votre question concerne 'HttpURLConnection'. Afaik, ce n'est pas possible avec cette classe. Il y a certainement des façons de le faire, même si je ne peux pas parler de ce qui est disponible dans le SDK Android. La recommandation écrasante semble être de ne pas le faire. Aller contre les conventions est un choix extrêmement risqué, en particulier pour la maintenabilité. – jordanpg