调用Web服务的内容类型

时间:2017-06-03 06:48:17

标签: c# web-services netsuite

如果我在定义竞赛类型时出错了,请纠正我:

Content-Type: application/json; charset=utf-8
{"my_id":"975","my_a_id":"Test66","param":"4","amount":"66"}

Content-Type: application/x-www-form-urlencoded
my_id=123&my_a_id=Test66&param=4&amount=66

可能还有哪些其他内容类型?

哪种内容类型支持RESTLet NetSuite服务?

我有POST到网络服务:

POST https://some.netsuite.uri?deploy=1 HTTP/1.1
Authorization: NLAuth nlauth_account=3624292_SB3, nlauth_email=xduh31@gmail.com, nlauth_signature=Pass987654, nlauth_role=3
Accept: application/json
Content-Type: application/json; charset=utf-8
Host: rest.eu1.netsuite.com
Cookie: JSESSIONID=**************************************; lastUser=1234567_SB9_1282_3; NS_ROUTING_VERSION=LAGGING; NS_VER=2017.1.0
Content-Length: 69
Expect: 100-continue

{"my_id":"975","my_a_id":"Test66","param":"4","amount":"66"}

在网址中我有x-www-form-urlencoded - ?deploy=1

之类的内容
https://some.netsuite.uri?deploy=1

且数据为json样式:

{"my_id":"975","my_a_id":"Test66","param":"4","amount":"66"}

UPD

我得到了答案,我想应该返回JSON数据:

HTTP/1.1 200 OK
Date: Sat, 03 Jun 2017 06:21:46 GMT
Server: Apache
Cache-Control: No-Cache
Pragma: No-Cache
Content-Length: 41
Expires: 0
Edge-Control: no-store
X-N-OperationId: 486c2d20-099d-446b-9788-4816db59a1fd
Set-Cookie: .......................; path=/
NS_RTIMER_COMPOSITE: 1688996695:706172746E6572733030312E70726F642E6475622E6E65746C65646765722E636F6D:80
P3P: CP="CAO PSAa OUR BUS PUR"
Vary: User-Agent
Content-Type: application/json; charset=utf-8

org.mozilla.javascript.Undefined@54b896b0

但这个答案看起来不像JSON?

2 个答案:

答案 0 :(得分:0)

一个问题可能是您的网址。你有没有尝试过改变

https://some.netsuite.uri&deploy=1

https://some.netsuite.uri?deploy=1

修改

此外,您的Accept标头表示您正在寻找应用程序/ json响应,是服务器返回的内容吗?

答案 1 :(得分:0)

您可以在NS帮助中心找到支持的内容类型:

  

RESTlets支持输入和输入的JSON和纯文本内容类型   输出。对于每个RESTlet,输出内容类型与输入相同   内容类型。

     

您必须在HTTP Content-Type标头中设置内容类型。您可以   使用以下值指定输入/输出内容类型   RESTlet:

     

应用/ JSON

     

文本/纯

     

如果您指定的内容类型不是JSON或文本,则会出现415错误   返回时显示以下消息:

     

内容类型无效。您只能使用application / json或text / plain   使用RESTlets。

Documentation

除了shazmodan提到的url中的问题之外,缺少脚本Id。以下是有效的重定位网址的示例:

iteminfo.get(iteminfo.size() - 1)

您可以在网址中传递其他参数:

https://rest.netsuite.com/app/site/hosting/restlet.nl?deploy=1&script=1

或在请求正文中,如果您使用的是https://rest.netsuite.com/app/site/hosting/restlet.nl?deploy=1&script=1&my_id=123&my_a_id=Test66&param=4&amount=66 POST方法,但它必须是有效的JSON。但内容类型必须始终为PUTapplication/json