WSDL is only compatible with the SOAP 1.1/1.2 specification for web services.
The nice thing about consuming SOAP services with a WSDL metadata description is that, as you say, you can just generate the client code necessary to call the service. This is because the WSDL file specifies the following things:
- Address - where the service endpoint is located
- Bindings - what transport you should use to consume the service
- Contract - the service operations, including any custom types definitions
While there are equivalents for WSDL with a REST service, they will only be available to you if the service provider has implemented them. An example is WADL.
When consuming a REST service you must assemble the above three pieces of information manaually, as you have discovered. The equivalent information for a REST service:
- Address - The base service URL + the resource URL
- Binding - HTTP - GET/POST/PUT/DELETE
- Contract - The HTTP verb supported by the resource, and the JSON (or XML) representation of the resource.
For the address, you can get this from the service provider.
The binding can be acheived by using WebClient or HttpClient. (WebClient is the easiest to use, HttpClient is shinier)
The Contract, you will need to ask the service provider what verbs are supported by the resource you want to consume. Then you can use something like the json2csharp online tool to generate your client side type representation of the resource JSON.
Once you have put all this in place you should be ready to consume the new service.