虽然使用AzureSearch .NET SDK中的SearchAsync函数将包含UTF8标志的查询编码字符串放入响应为空,但未找到任何记录。在对Fiedler进行调查之后,我知道POST请求已发送到azure搜索服务:
url: /indexes('[[INDEX_NAME]'/docs/search.post.search?api-version=2017-11-11 HTTP / 1.1
正文:
const accountSid = 'ACXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX';
const authToken = 'your_auth_token';
const client = require('twilio')(accountSid, authToken);
client.applications
.create({
voiceMethod: 'GET',
voiceUrl: 'http://demo.twilio.com/docs/voice.xml',
friendlyName: 'Phone Me'
})
.then(application => console.log(application.sid))
.done();
Azure门户发送的相同请求返回正确的结果。尽管Fiedler显示门户网站中使用的方法是GET
url:/ indexes / products-index / docs?api-version = 2017-11-11&search = pier%C5%9Bcionek *。
对于包含UTF8标志的查询,我应该怎么做才能从AzureSearch SDK获得与门户相同的响应?对于没有UTF8标志的请求,SearchAsync方法将返回正确的结果。
答案 0 :(得分:1)
您应该期望Azure门户中的查询浏览器与直接使用API的结果相同。
在这种情况下,您上面包含的两个查询是不同的。 POST查询同时包含搜索子句和过滤器子句,而GET请求仅包含搜索子句。也许索引中没有文档满足POST查询中制定的两个条件,从而导致结果为空?
此外,对于POST请求的正文,您不应使用URL编码值。正文必须是正确的JSON文档(包括正确的字符编码),并且没有其他编码。