Jump to content
Server Maintenance This Week. ×

Trouble posting to Drupal via REST/cURL & BaseElements Plugin /


This topic is 698 days old. Please don't post here. Open a new topic instead.

Recommended Posts

Hi everyone,

I'm trying to post data to a Drupal application from FileMaker via the BaseElements plugin. I'm getting a token, setting authentication, headers, and the post variables via the BaseElements functions and I've followed examples but I'm getting the following error:  {"error":"The type link relation must be specified.”}    I can't find any information about what this error might be. Does anyone have any idea based on the output I've gathered below?

A working cURL command that I'm basically trying to replicate  that can be run from the command line is here:

curl --include \
  --request POST \
  --user res_user:"password" \
  --header 'Content-type: application/hal+json' \
  --header "X-CSRF-Token: $X_CSRF_TOKEN" \
  --data-binary '{"_links":{"type":{"href":"http://server.mskcc.org/rest/type/node/event"}},
  "field_event_type":[{"value":"Seminar"}],
  "title":[{"value":”Novel Approaches to Mating Drosophila"}],
  "field_shared_datetime":[{"value":"2016-06-13T17:15:00"}],
  "body":[{"value":"Tea ?: Yes<br>Tea Time: Tea at 1:15 PM"}],
  "field_shared_location_text":[{"value":"ZRC Auditorium"}],
  "field_shared_sponsor":[{"value":"Developmental Biology"}],
  "field_event_hosts_text":[{"value":"Alexander Rudensky"}],
  "field_shared_people_text":[{"value":"Name of Speaker: Steven Reiner<br>Speaker\u0027s Credentials: M.D.<br>Speaker\u0027s Title: Professor, Department of Microbiology and Immunology<br>Speaker\u0027s Affiliation: Columbia University Medical Center<br>Institution Location: New York, NY"}],
  "type":[{"target_id":"event"}]}' \
http://dev.mskcc.org/entity/node?_format=hal_json

I've attached the script I'm working with as an image.Screen Shot 2016-08-03 at 6.53.16 PM.png

thanks in advance. :)
Steven

 

-----

 

BE_Curl_Trace returned:

== Info:   Trying 172.22.233.50...
== Info: Connected to dev.mskcc.org (172.22.233.50) port 80 (#0)
== Info: Server auth using Basic with user 'res_user'
=> Send header, 0x12c bytes (0x12c)
0000: POST /entity/node?_format=hal_json HTTP/1.1
0x2d: Host: server.mskcc.org
0x42: Authorization: Basic cmVzX2RydXBhbDpUcnU3SCZrQQ==
0x75: User-Agent: libcurl-agent-base-elements-plugin/3.2
0xa9: Accept: */*
0xb6: Content-Type: application/hal+json
0xda: X-CSRF-Token: q3LKwzWvNtlP2_X79TpJATfEnOB8HV-_lDaVCiTK8gg
0x115: Content-Length: 353
0x12a: 
=> Send data, 0x161 bytes (0x161)
0000: " {\"_links\":{\"type\":{\"href\":\"http://dev.mskcc.org/rest/ty
0x40: pe/node/event\"}},..  \"field_event_type\":[{\"value\":\"Seminar
0x80: \"}],..  \"title\":[{\"value\":\"Sister Cells that Feast and Fas
0xc0: t --- Why Growth and Repair May Not be Fair XI\"}],..  \"field_s
0x100: hared_datetime\":[{\"value\":\"2016-06-13T17:15:00\"}],..  \"typ
0x140: e\":[{\"target_id\":\"event\"}]}"
== Info: upload completely sent off: 353 out of 353 bytes
<= Recv header, 0x1a bytes (0x1a)
0000: HTTP/1.1 400 Bad Request
<= Recv header, 0xf bytes (0xf)
0000: Server: nginx
<= Recv header, 0x24 bytes (0x24)
0000: Content-Type: application/hal+json
<= Recv header, 0x1c bytes (0x1c)
0000: Transfer-Encoding: chunked
<= Recv header, 0x18 bytes (0x18)
0000: Connection: keep-alive
<= Recv header, 0x18 bytes (0x18)
0000: Keep-Alive: timeout=10
<= Recv header, 0x33 bytes (0x33)
0000: Cache-Control: must-revalidate, no-cache, private
<= Recv header, 0x1a bytes (0x1a)
0000: X-UA-Compatible: IE=edge
<= Recv header, 0x16 bytes (0x16)
0000: Content-language: en
<= Recv header, 0x21 bytes (0x21)
0000: X-Content-Type-Options: nosniff
<= Recv header, 0x1d bytes (0x1d)
0000: X-Frame-Options: SAMEORIGIN
<= Recv header, 0x28 bytes (0x28)
0000: Expires: Sun, 19 Nov 1978 05:00:00 GMT
<= Recv header, 0x25 bytes (0x25)
0000: Date: Wed, 03 Aug 2016 11:02:45 GMT
<= Recv header, 0x2 bytes (0x2)
0000: 
<= Recv data, 0x40 bytes (0x40)
0000: 35
00x4: {"error":"The type link relation must be specified.”}      <——— here's the error
0x3b: 0
0x3e: 
== Info: Closing connection 0

 

BE_Response_Headers returned:


HTTP/1.1 400 Bad Request
Server: nginx
Content-Type: application/hal+json
Transfer-Encoding: chunked
Connection: keep-alive
Keep-Alive: timeout=10
Cache-Control: must-revalidate, no-cache, private
X-UA-Compatible: IE=edge
Content-language: en
X-Content-Type-Options: nosniff
X-Frame-Options: SAMEORIGIN
Expires: Sun, 19 Nov 1978 05:00:00 GMT
Date: Wed, 03 Aug 2016 11:02:45 GMT
 

Link to comment
Share on other sites

  • 4 weeks later...

With the help of Ronnie Rios, the folks at BaseElements and especially, Christian from MonkeyBreadSoftware.de and his Monkey Bread plugin,  we got this working, with the following script:

 

 

 

# start a new transfer

Set Variable [ $curl ; Value: MBS("CURL.New" ) ] 

 

# set URL

Set Variable [ $r ; Value: MBS("CURL.SetOptionURL"; $curl; "http://server34343.mskcc.org/rest/session/token") ] 

 

# set post

Set Variable [ $result ; Value: MBS("CURL.SetOptionPost"; $curl; 1) ] 

Set Variable [ $result ; Value: MBS("CURL.SetOptionUsername"; $curl; "res_user") ] 

Set Variable [ $result ; Value: MBS("CURL.SetOptionPassword"; $curl; password") ] 

Set Variable [ $result ; Value: MBS("CURL.SetOptionHTTPHeader"; $curl; "Content-type: application/hal+json"; "X-CSRF-Token: $"&$r) ] 

Set Variable [ $result ; Value: MBS("CURL.SetOptionURL"; $curl; "http://dev.mskcc.org/entity/node?_format=hal_json") ] 

Set Variable [ $result ; Value: MBS("CURL.SetOptionPostFields"; $curl; "{\"_links\":{\"type\":{\"href\":\"http://dev.mskcc.org/rest/type/node/event\"}}, \"field_event_type\":[{\"value\":\"Seminar\"}],\"title\":[{\"value\":\"MBS TEST 4 after talking to Christian\"}], \"field_shared_datetime\":[{\"value\":\"2016-06-13T17:15:00\"}], \"type\":[{\"target_id\":\"event\"}]}"; "UTF-8")

 

# run transfer

Set Variable [ $ErrorCode ; Value: MBS("CURL.Perform";$curl) ] 

 

# get result as text and debug messages:

Set Variable [ $TextResult ; Value: MBS("CURL.GetResultAsText";$curl) ] 

Set Variable [ $DebugMessages ; Value: MBS("CURL.GetDebugAsText";$curl) ] 

 

# cleanup

Set Variable [ $r ; Value: MBS("CURL.Cleanup"; $curl) ] 

Set Variable [ $result ; Value: MBS("CURL.Cleanup"; $curl) ] 

 


 

 

Link to comment
Share on other sites

  • 5 months later...
  • Newbies

Hi Steven,

i'm trying to show data in Drupal 8 from Filemaker db and i don't know how to proceed. Can you share your approach. What did you used the BaseElement Plugin and/or the Monkey Bread Plugin?

Thank you in advance 

Kiva

Link to comment
Share on other sites

@kiva - in the last post ( with the working script ), he is using the Monkeybread Plugin. Looking at both, it seems like you can do the same thing with the BE plugin. We, most often, use the BE plugin the send files or make API connections. We have done it with both...but BE has always done what we need.

Link to comment
Share on other sites

  • 2 weeks later...

@kiva   I forget what the problem was but we tried (hard) to  get it working with the BaseElements plugin and there was something it couldn't do, at the time. And we ended up getting it working with MonkeyBread.

I'm attaching the working script again.. it may include a few lines that we added in for good measure.  The "MBS" function name is missing because we haven't yet purchased it and were using a demo at the time.  We're waiting for the next version of FMServer to purchase the plugin.

I found the following which looks useful if you want to give BaseElements a try first:

 http://support.goya.com.au/discussions/free-baseelements-plugin/1463-http-post-with-token-json

working_post_script_with_MonkeyBread.png

Link to comment
Share on other sites

  • Newbies

Thanks for the answers. The MBS Plugin was helpful to me and have done the connection from Filemaker to Drupal. I can push data and hand over Filemaker-fields to the CMS. I have used your posted script with few changes. Thanks again

Link to comment
Share on other sites

On 3/7/2017 at 7:27 PM, Steven Cappiello said:

...The "MBS" function name is missing because we haven't yet purchased it and were using a demo at the time.  We're waiting for the next version of FMServer to purchase the plugin.

What is the logic behind waiting?

Link to comment
Share on other sites

  • 5 years later...

This topic is 698 days old. Please don't post here. Open a new topic instead.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.